我正在寻找一些易于使用的跨平台线程库,用C++编写。
你对boost::thread
或Pthreads
有什么看法?Pthreads只在符合POSIX标准的系统上运行吗?
Qt
库中的线程支持怎么样?
我正在寻找一些易于使用的跨平台线程库,用C++编写。
你对boost::thread
或Pthreads
有什么看法?Pthreads只在符合POSIX标准的系统上运行吗?
Qt
库中的线程支持怎么样?
C++11自带一个线程库,它是建立在Boost线程库之上的。不幸的是,我似乎记得Boost.Threads和C++11提供的线程库之间存在着不容易解决的差异。但是,如果你计划切换到C++标准线程库,我相信Boost.Threads是目前最接近的选择。
我想,在底层,这些库将使用POSIX系统上的Pthreads以及其他地方可用的本机线程支持。
免责声明:我没有使用过这两个库中的任何一个。
Pthreads
只能运行在 POSIX 系统上。使用来自 Qt
的 QThread
是一种可行的方式。它可以在以下平台上使用:Linux、Mac OS X、Windows、嵌入式 Linux、Windows CE、Symbian 和 Maemo。
:)
- sbi:)
- sbi我很惊讶没人提到Intel TBB库(链接到我的另一个回答)。此外,基于任务的实现应优先于基于线程的实现。
Qt拥有相当不错的线程支持。如果您只需要创建一个线程并在其中运行一些代码,那么QThread
就足够了。还有许多其他高级类可以帮助您处理线程池,甚至可以抽象并发执行(QtConcurrent框架)。
我曾经使用pthreads编写可以在多个平台上运行的代码。为了解决Windows缺乏pthreads的问题,我成功地使用了以下开源库:POSIX Threads for Windows
Boost.Threads在UNIX系统上基于PThreads构建,在Windows上基于Win32 Threads。
Boost库在语法上非常简单,所有与C++代码正确接口C库的复杂业务都在幕后处理。然而,如果您对C++不是很熟悉,PThreads可能会更直观,因为它具有简单的C API。
Qt Threads也是一个很好的库,但由于我使用了其他几个boost库,所以无论如何我都会编译和链接Boost。我可能不会总是链接Qt。而且,我只是不想记住如何使用两个不同的库。