boost::thread的六种使用方法总结,本文初步介绍线程的函数、构造、执行的详细解释。
| 函数 | 功能 |
|---|---|
| join() | 让主进程等待子线程执行完毕后再继续执行 |
| get_id() | 获得线程的 id 号 |
| detach() | 标线程就成为了守护线程,驻留后台运行 |
| bool joinable() | 是否已经启动,为 join() |
thread::join()是个简单暴力的方法,主线程等待子进程期间什么都不能做,一般情形是主线程创建thread object后做自己的工作而不是简单停留在join上。
thread::join()还会清理子线程相关的内存空间,此后thread object将不再和这个子线程相关了,即thread object不再joinable了,所以join对于一个子线程来说只可以被调用一次,为了实现更精细的线程等待机制,可以使用条件变量等机制。
1、可会合(joinable):这种关系下,主线程需要明确执行等待操作,在子线程结束后,主线程的等待操作执行完毕,子线程和主线程会合,这时主线程继续执行等待操作之后的下一步操作。主线程必须会合可会合的子线程。在主线程的线程函数内部调用子线程对象的wait函数实现,即使子线程能够在主线程之前执行完毕,进入终止态