boost 多线程 - shijiwensjw/C-learning GitHub Wiki
一些成员函数
- join方法是一个阻塞调用:它可以暂停当前线程,直到调用join的线程运行结束
(有时可用来控制线程乱序,通过阻塞使多个线程一个一个执行)
当需要阻塞时,一种可能是,main函数代表的主线速度过快,直接跑完,则其余线程没有主线程的支持不会运行。所以两种思路:
- 延时 wait()。延时缺陷是你不知道精确的多长时间等待所有线程执行完成。
- join()函数进行阻塞。
- sleep()可以在预计的一段时间或一个特定的时间点后才让线程继续执行
- 一个线程对象上调用 interrupt() 会中断相应的线程
- mutex()基本用法:
mutex.lock();
//共享数据处理、修改操作
mutex.unlock();
- 获取和释放互斥体是一个典型的模式,是由Boost.Thread通过不同的数据类型支持。 例如,不直接地调用 lock() 和 unlock(),使用
boost::lock_guard 类也是可以的。
boost::lock_guard<boost::mutex> lock(mutex);
//共享数据处理、修改操作
编译方法
g++ thread_01.cpp -o thread_01 -lboost_thread -lboost_system