C++ Boost线程库和Pthreads的显著区别是什么?
可能重复:C++ Boost线程库和Pthreads的显著区别是什么?,c++,multithreading,boost,pthreads,C++,Multithreading,Boost,Pthreads,可能重复: 自从我理解了什么是多线程以来,我一直在使用pthreads库编程示例。最近,我在互联网上偶然发现了Boost线程库,并对此感到好奇。有人能具体说明两者之间的显著区别吗?Boost是否提供了任何额外的特权,如果是,那么这些特权是什么?根据我的经验,Boost::thread库的功能与pthreads密切相关。pthreads中提供的一些东西是boost::thread库外部的,但在boost中仍然可用(例如boost::interprocess中提供的信号量) 我看到的主要好处是能够
自从我理解了什么是多线程以来,我一直在使用pthreads库编程示例。最近,我在互联网上偶然发现了Boost线程库,并对此感到好奇。有人能具体说明两者之间的显著区别吗?Boost是否提供了任何额外的特权,如果是,那么这些特权是什么?根据我的经验,Boost::thread库的功能与pthreads密切相关。pthreads中提供的一些东西是boost::thread库外部的,但在boost中仍然可用(例如boost::interprocess中提供的信号量) 我看到的主要好处是能够[更]轻松地编写跨平台代码。由于boost::thread库似乎是作为各种操作系统原语的跨平台接口层实现的,因此我不认为boost::thread中有在实际操作系统API中不可用的其他重要功能 事实上,Windows的一些底层功能我还没有找到真正的等效功能,主要是因为我使用Win32的经验,而且几乎可以肯定,因为我对boost::thread和pthread库中提供的功能了解有限。来自:
BoST..NoST允许在<>强>可移植C++代码< /强>:< /P>中使用共享数据执行多个线程 便携式
pthread属于unix系统,因此如果在代码中使用它们,那么代码将无法移植到(比如)Windows C++线程是一个C++库,而pTog是一个“C”库:如果应用程序是用C++编写的,那么你可以利用它来简化代码(例如,在理解可移动的概念的容器中放置<代码>线程< /代码> S对象)。但是当然,它被设计成C++库而不是C库。在我的脑海中出现了一些不同之处。我并不认为这是一份详尽的差异清单
pthreads有boost::thread缺少的东西: 当您使用boost::thread时,您可以获取底层的pthread\u t
(或
pthread\u mutex\u t
等),通过调用native\u handle()
成员
函数,并使用它恢复未提供的功能
直接通过boost::thread
- 设置调度参数(
)pthread\u attr\u setschedparam
- 堆栈查询、操作(
)pthread\u attr\u getstacksize
- 互斥/优先级查询,操作(
)pthread\u互斥\u getprioceiling
- 线程句柄和线程id的不同类型
- 可以表示“非任何线程”的线程id
- 在具有任意参数的任意函子上启动线程的能力
- 能够“调用一次”具有任意参数的任意函子
- 条件变量等待任意可锁定类型的能力
- 一次锁定多个互斥体而不产生死锁的能力
- 在关联容器中存储线程id的可移植方法
- RAII支持解锁互斥锁