boost 多线程 - shijiwensjw/C-learning GitHub Wiki

一些成员函数

  1. join方法是一个阻塞调用:它可以暂停当前线程,直到调用join的线程运行结束 (有时可用来控制线程乱序,通过阻塞使多个线程一个一个执行) 当需要阻塞时,一种可能是,main函数代表的主线速度过快,直接跑完,则其余线程没有主线程的支持不会运行。所以两种思路:
    • 延时 wait()。延时缺陷是你不知道精确的多长时间等待所有线程执行完成。
    • join()函数进行阻塞。
  2. sleep()可以在预计的一段时间或一个特定的时间点后才让线程继续执行
  3. 一个线程对象上调用 interrupt() 会中断相应的线程
  4. mutex()基本用法:
    mutex.lock();
    //共享数据处理、修改操作
    mutex.unlock();
  5. 获取和释放互斥体是一个典型的模式,是由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

教程示例

  1. http://www.linuxidc.com/Linux/2011-07/39215p10.htm
  2. http://www.linuxidc.com/Linux/2011-07/39215p11.htm