3 c++ linux pthreads c++11 stdthread
Linux对我来说是一个新平台.我已经用c ++在Windows上编码了很多年,并且已经适应了该平台上的多线程.
当我需要在linux平台上学习c ++时,C++ 11就出现了.
Linux似乎在大多数情况下使用pthreads - 好吧还有boost :: threads和QT也有自己的线程.但是随着C++ 11出现了std :: thread,一种全新的(跨平台和C++标准)做线程的方式.
所以我想我将不得不学习pthreads和std :: threads.最终,std :: thread似乎更重要,但那里有很多遗留代码,所以我必须知道两者.
对于Windows上的线程同步,我将使用WaitForMultipleObjects等待许多任务完成,然后继续进一步的工作.
pthreads是否存在类似的同步机制?的std ::线程?
我已经看过pthread_join了,它似乎只能在一个线程上等待一次.我可能错过了另一个pthread电话吗?
std::thread被boost::threadC++ 11接受了一些额外的东西.我的理解是如果boost::thread在代码中被替换std::thread它仍然应该编译和工作.
boost::thread基于pthreads设计,在线程,互斥和条件变量上提供精简的C++包装器.虽然线程取消不在C++ 11的范围之内,因为它没有协议如何在C++中工作.
所以,通过学习pthreads你也学习std::thread概念.std::thread在pthreadsC API 之上添加了大部分语法糖和便利功能.
然而,关于WaitForMultipleObjects()既不提供pthreads也不std::thread提供与其bWaitAll=FALSE模式类似的任何东西,它通常使用管道select()在UNIX 上进行模拟,或者在现代eventfd()和epoll()Linux 上进行模拟.bWaitAll=TRUE模式可以通过轮流等待所有任务来模拟,因为它无论如何都不会继续,直到所有对象都准备就绪.
| 归档时间: |
|
| 查看次数: |
2060 次 |
| 最近记录: |