过去没有使用过线程技术的话,对于初学者来说,在C++中哪种线程技术会更容易掌握?是boost::thread还是pthreads?
过去没有使用过线程技术的话,对于初学者来说,在C++中哪种线程技术会更容易掌握?是boost::thread还是pthreads?
我将与其他人走相反的路线 - 学习(或至少熟悉)pthreads。由于boost主要只是在posix平台上对pthread进行包装,因此了解底层运行情况有所帮助。为了实现通用性,boost将特定于平台的功能留给开发者自己实现。如果要使用native_handle()调用,则需要了解平台提供了什么。
可以将其类比为sockets。有许多socket类和框架。但它们最终都包装了底层平台的socket API。通过了解底层技术,你的理解会更加深入,并能知道你的类抽象可能存在哪些缺陷。
boost::thread是一个非常好的、可移植的抽象层。我肯定会使用它,但也要学习本地线程API,比如pthread,这样你就知道在你的平台上线程是如何工作的。
我认为它们的难度相当接近。唯一的大区别是PThreads得到了广泛支持(如果您关心跨平台移植)。另一个区别是,已经有相当多的关于PThreads的好书籍,虽然几乎所有概念都可以转换成boost::thread和许多其他线程库。