深入实践boost读书笔记2

来源:互联网 发布:淘宝运营公司 编辑:程序博客网 时间:2024/05/21 21:34

秘籍38:boost::mutex表示互斥量,使用boost::lock_guard<boost::mutex>对象(它是一个RAII类)实现对互斥量的管理,构造函数lock(),析构函数unlock(),boost::recursive_mutex可以从单个线程中多次锁定互斥量,但是其运行速度慢,通常代表不良设计,所以一般不用。

秘籍39:boost::atomic提供系统原子操作的包装类,并为它们提供统一的、可移植性的接口。从不同线程使用boost::atomic是安全的,原子变量的各项操作将被系统视为单个事物。boost::atomic只能适用于POD类型,否则,其行为是未定义的。

秘籍40:boost::unique_lock也是一个RAII类,仅仅是一个有附加功能的lock_guard,有明确的加锁和解锁方法。condition_variable可以阻塞线程并等待被通知。wait方法阻塞线程,notify_one和notify_all可以通知阻塞线程不用阻塞了。

秘籍41:boost::shared_lock和boost::shared_mutex可用于创建共享所,当只需要读数据时,共享锁十分有用。

秘籍42,43,44:boost::thread_specific_ptr变量对每个线程拥有独立的指针。interrupt调用可以中断指针。boost::thre_group可以操纵一组线程。


秘籍45:boost::io_service变量可以存储和执行发送给它的任务,但是不能直接发送用户任务给它,因为它们可能抛出或者接受引发其他任务的中断。所以需要用结构体包装用户任务,并且重置所有以前的中断,boost::io_service::run()方法将从队列中得到准备好的任务并逐一执行,调用boost::io_service::stop()停止,如果没有更多任务,boost::io_service::run()函数返回,所以需要使用boost::asio::io_service::work的实例迫使其继续执行。

0 0
原创粉丝点击