创建线程

    boost::thread myThread(threadFun);

    需要注意的是:参数可以是函数对象或者函数指针。并且这个函数无参数并返回void类型

    当一个thread执行完成时,这个子线程就会消失。注意这个线程对象不会消失,它仍然是一个还处在它的生存期的C++对象。同理,当对一个堆上的线程对象的指针调用delete时候,线程对象被销毁,操作系统的线程并不能保证就消失。

放弃时间片

    boost::thread::yield();

    当前线程放弃余下的时间片。

等待一个线程

    myThread.join();

    调用这个方法的线程进入wait状态,直到myThread代表的线程完成为止。如果它不结束的话,join方法就不会返回。join是一个等待子线程结束的最好的方法。如果主程序不调用join方法而直接结束,它的子线程有可能没有执行完成,但是所有的子线程也随之退出。不调用join方法,主线程就不会等待它的子线程。

 1 #include <iostream>
 2 #include <boost/thread/thread.hpp>
 3 #include <boost/thread/xtime.hpp>
 4  
 5 struct MyThreadFunc {
 6    void operator( )( ) {
 7       // Do something long-running...
 8    }
 9 } threadFun;
10  
11 int main( ) {
12  
13    boost::thread myThread(threadFun); // Create a thread that starts
14                                       // running threadFun
15  
16    boost::thread::yield( );           // Give up the main thread's timeslice
17                                       // so the child thread can get some work
18                                       // done.
19  
20    // Go do some other work...
21  
22    myThread.join( );                  // The current (i.e., main) thread will wait
23                                       // for myThread to finish before it returns
24  
25 }
View Code

线程组

相关文章: