过去没有使用线程的经验,C ++中的线程技术对于初学者来说是最简单的吗? boost :: thread或pthreads?
答案 0 :(得分:38)
我将走向与其他人相反的方向 - 学习(或者至少熟悉pthreads中可用的内容)。
由于boost主要只是pthreads(在posix平台上)的包装,因此有助于了解底层发生了什么。在尝试通用时,boost将平台特定功能展开。为了实现它,您需要使用native_handle()调用。要使用native_handle()调用,您需要知道平台提供的内容。
把它想象成套接字。有许多套接字类和框架。但最终它们包装了底层平台的套接字API。通过了解它,你的理解总是更加丰富 - 并且知道你的课程抽象可能会有什么缺点。
答案 1 :(得分:35)
转到boost :: thread。这是即将到来的closely related的工作C++ standard threads,界面非常易于使用,也适用于C ++(RAII而不是手动资源管理)。
答案 2 :(得分:9)
boost :: thread是一个非常好的可移植抽象。我肯定会使用它,但也学习本机线程api,比如pthreads,这样你就知道线程如何在你的平台上运行。
答案 3 :(得分:6)
Boost.Thread使用RAII概念进行锁定,这使得事情更安全,并有助于避免忘记释放互斥锁等错误。
答案 4 :(得分:2)
我会说他们的难度非常接近。我看到的唯一重大区别是PThreads得到了广泛支持(如果您关注跨平台移植)。另一个是有很多关于PThreads的好书,尽管几乎所有的概念都会转换为boost :: thread和许多其他的线程库。