std::thread
C++的多线程绕不开C++-11当中的thread
传送门:
- thread in cpp reference
- thread in Microsoft Tutorial
创建线程
创建一个无参函数线程
创建一个含参函数线程
创建一个类成员的含参函数线程
thread内部函数
get_id()
线程存在着唯一标识符,而调用get_id()
可以获取之。
int this_thread_id = std::this_thread::get_id();
hardware_concurrency()
可能有同学会疑惑,比如一个线程池,我们准备几个线程到线程池中合适呢?
答:一般几核CPU开几线程。
而获取核心数的办法是std::thread::hardware_concurrency()
join() (重点)
等待线程,直到它执行完毕
输出为
detach() (重点)
将线程分离(detach)操作的目的是使线程在后台运行,使得其执行变得独立,即允许线程在没有其他线程明确等待其完成的情况下结束。分离线程不会与创建它的线程同步,这意味着一旦分离,主线程将不再等待分离线程的结束。
分离线程,在后台运行线程
输出为