当前位置: 首页 > 文档资料 > C++并发编程 >

附录B 并发库的简单比较

优质
小牛编辑
117浏览
2023-12-01

虽然,C++11才开始正式支持并发,不过,高级编程语言都支持并发和多线程已经不是什么新鲜事了。例如,Java在第一个发布版本中就支持多线程编程,在某些平台上也提供符合POSIX C标准的多线程接口,还有Erlang支持消息的同步传递(有点类似于MPI)。当然还有使用C++类的库,比如Boost,其将底层多线程接口进行包装,适用于任何给定的平台(不论是使用POSIX C的接口,或其他接口),其对支持的平台会提供可移植接口。

这些库或者编程语言,已经写了很多多线程应用,并且在使用这些库写多线程代码的经验,可以借鉴到C++中,本附录就对Java,POSIX C,使用Boost线程库的C++,以及C++11中的多线程工具进行简单的比较,当然也会交叉引用本书的相关章节。

特性启动线程互斥量监视/等待谓词原子操作和并发感知内存模型线程安全容器Futures(期望)线程池线程中断
章节引用第2章第3章第4章第5章第6章和第7章第4章第9章第9章
C++11std::thread和其成员函数std::mutex类和其成员函数std::condition_variablestd::atomic_xxx类型N/Astd::futureN/AN/A
std::lock_guard模板std::condition_variable_any类和其成员函数std::atomic类模板std::shared_future
std::unique_lock模板std::atomic_thread_fence()函数std::atomic_future类模板
Boost线程库boost::thread类和成员函数boost::mutex类和其成员函数boost::condition_variable类和其成员函数N/AN/Aboost::unique_future类模板N/Aboost::thread类的interrupt()成员函数
boost::lock_guard类模板boost::condition_variable_any类和其成员函数boost::shared_future类模板
boost::unique_lock类模板
POSIX Cpthread_t类型相关的API函数pthread_mutex_t类型相关的API函数pthread_cond_t类型相关的API函数N/AN/AN/AN/Apthread_cancel()
pthread_create()pthread_mutex_lock()pthread_cond_wait()
pthread_detach()pthread_mutex_unlock()pthread_cond_timed_wait()
pthread_join()等等等等
Javajava.lang.thread类synchronized块java.lang.Object类的wait()和notify()函数,用在内部synchronized块中java.util.concurrent.atomic包中的volatile类型变量java.util.concurrent包中的容器与java.util.concurrent.future接口相关的类java.util.concurrent.ThreadPoolExecutor类java.lang.Thread类的interrupt()函数