C++下可以使用thread加入线程,有两种方式加入线程,分别是join和detach,写法如下:
join这个属于等待线程,join特点是主线程必须等子线程执行完才能退出
int main()
{
printf("这个属于主线程,也就是main的线程n");
std::thread udp(udpRecv);
udp.join(); //join这个属于子线程,join特点是主线程必须等子线程执行完才能退出
return 0;
}
detach属于分离线程,主线程不需要等待子线程,它和主线程独立
int main()
{
printf("这个属于主线程,也就是main的线程n");
std::thread udp(udpRecv);
udp.detach();
return 0;
}
二、代码
1.join属于等待线程,一个线程没结束不能执行另一个线程
#include2.detach属于分离线程,主线程和子线程可以同步执行#include using namespace std; void t1() { int i = 0; while (1) { printf("%dn", i++); } } void t2() { char c = 'a'; while (1) { printf("%cn",c++); } } int main() { thread T1(t1);//入参为函数名 T1.join(); std::cout << "这是主线程n"; char c = 'a'; while (1) { printf("%cn", c++); } return 0; }
#include#include using namespace std; void t1() { int i = 0; while (1) { printf("%dn", i++); } } void t2() { char c = 'a'; while (1) { printf("%cn",c++); } } int main() { thread T1(t1);//入参为函数名 T1.detach(); std::cout << "这是主线程n"; char c = 'a'; while (1) { printf("%cn", c++); } return 0; }
detach主线程子线程互不干扰,且位置可以随意放置



