简介
常用的多线程编程工具类
thread
/mutex
/condition_variable
lock_guard
/unique_lock
atomic
原子类型,基于CAS操作的原子类型,线程安全sleep_for
主线程如何处理子线程
join
等待子线程结束才会继续向下执行
detach
将子线程设置为分离线程主线程可以直接往下执行不必等待子线程执行完毕
C++要求对每个线程都要进行join或者detach操作,否则会抛异常!!!
C++ thraed使用实例
void threadHandle1(int time)
{
std::this_thread::sleep_for(std::chrono::seconds(time));
cout << "hello thread1" << endl;
}
void threadHandle2(int time)
{
std::this_thread::sleep_for(std::chrono::seconds(time));
cout << "hello thread2" << endl;
}
int main()
{
std::thread t1(threadHandle1, 2); // 线程对象创建后,子线程就已经启动了
std::thread t2(threadHandle2, 2);
// join在子线程没执行完之前都会在这里阻塞住
t1.join();
t2.join();
// detach分离线程,主线程不会阻塞在此
/*t1.detach();
t2.detach();*/
cout << "main thread done!" << endl;