在c++11之前c++没有提供对并发编程提供语言级别的支持,而在c++11在增加了线程以及线程相关的类,很方便的支持并发编程,提高了代码的可移植性。
创建线程:使用std::thread类可以创建新的线程,可以使用std::this_thread::get_id() 查看当前线程的id.。示例如下:
1 |
|
使用join函数会阻塞主线程,直到线程函数执行结束,如果func有返回值,则返回值被忽略。而如果不想阻塞主线程,可以使用detach函数,但是detach之后,线程函数就被分离,无法与线程函数发生联系,也不知道线程函数会何时执行完。
当然,可以构造传入参数的线程如:
1 |
|
线程不能复制,但是可以被转移,利用移动语义(std::move)将一个线程的资源转给另外一个线程。也可以使用std::bind以及lambda函数表达式构造新的线程。如下:
1 |
|