3

linux 和 c++ 新手。我想创建一个只需要在 linux (ubuntuz) 上运行的应用程序,我需要使用基本的读写锁。

我看到有一些库提供“并发功能”。例如,要使用互斥锁,至少有 3 个选项:

  1. pthread_mutex_lock (pthread.h)

  2. 升压::互斥

  3. std::mutex (互斥量)

有人可以解释各种方法之间的区别吗?

4

2 回答 2

3

std::mutex是标准库的一部分。每个 C++ 编译器/库供应商都可以自由地以他们喜欢的任何方式实现它。Posix 的库实现更可能不仅仅是在底层使用 pthreads,而例如 Windows 库将使用 Windows API 原语。

如果可以,请使用std::mutex,但如果您还没有 C++11 支持,请编写自己的 SBRM 类来包装 pthread 互斥锁和锁定原语,或者在可行的情况下使用 Boost(例如,如果您的项目已经使用 Boost) . 无论如何,这一切都会归结为同一件事。

于 2012-07-30T07:13:56.453 回答
3
  • pthreads 是一个 C-API,可用于所有符合 posix 的系统(pthreads代表Posix THREADS)。

  • boost::mutex 是一个仅 C++ 的 API,它依赖于“boost”库(你不能在 C 代码中使用它;你添加了对“boost”的依赖)

  • boost 中的许多特性最终都会出现在 C++ 标准库中,例如线程;使用 C++11,你有 std::mutex,但你需要一个足够新的编译器来支持最近的添加。例如,如果您希望您的应用程序可向后移植到较旧的发行版,您可能希望避免使用它。

于 2012-07-30T07:14:13.437 回答