C++的并发世界(三)——线程对象生命周期

admin2024-04-03  0

0.案例代码

先看下面一个例子:

#include <iostream>
#include <thread>

void ThreadMain()
{
	std::cout << "begin sub thread:" << std::this_thread::get_id()<<std::endl;
	for (int i = 0; i < 10; i++)
	{
		std::cout << "thread in "<< i << std::endl;
		std::this_thread::sleep_for(std::chrono::seconds(1));
	}
	std::cout << "end sub thread:" << std::this_thread::get_id() << std::endl;
}

int main()
{
	std::cout << "the main ID:" << std::this_thread::get_id() << std::endl;
	std::thread th(ThreadMain);//线程创建启动
	std::cout << "begin sub thread" << std::endl;
	th.join();//阻塞等待子线程退出
	std::cout << "end sub thread" << std::endl;
	return 0;
}

C++的并发世界(三)——线程对象生命周期,在这里插入图片描述,第1张

1.案例代码分析

从执行结果来看,线程在std::thread th(ThreadMain)的时候就已经启动了,join只不过相当于堵塞等待的作用,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!