【发布时间】:2014-02-06 17:15:07
【问题描述】:
我注意到大多数记录器都被宣传为线程安全的。
这是什么意思?
它们对特定线程库是否安全,或者它们在任何多线程环境中是否安全(例如 PThread、Boost 线程、C++11 线程、Win32 线程、OpenMP 线程……)?
【问题讨论】:
-
互斥锁的概念不是特定于库的。通常记录器确实使用互斥锁来阻止线程相互干扰。线程安全记录器旨在运行在各种线程上。
-
@user1810087:据我所知read,互斥锁的概念是特定于库的。但是,由于例如OpenMP 和 Boost 线程都基于 PThreads(在 UNIX 中),它们使用相同的 PThreads 互斥锁。也许这就是它们兼容的原因。
-
它们并不具体,混合它们只是一个坏主意(而且也很丑陋)。您甚至可以编写自己的互斥锁并在每种类型的线程上使用它,只要互斥锁实例不是线程本地的。
-
我不打算混合它们。我只是想确保日志库可以与任何多线程库一起使用。
标签: c++ multithreading logging pthreads openmp