我目前正在实习,我被要求使用 C++ 编写一个多客户端服务器-客户端应用程序。因此,我正在尝试学习线程。有一个问题:
我想打印“你在线程 A”,然后“你在线程 B”,“现在你又在线程 A”。但是它只打印前两个句子并忽略 endl 命令。不能完全理解它是如何工作的。如何解决这个问题,您能否简要解释一下工作机制?
为什么主线程在所有函数调用完成之前退出?
void * function1(void * arg);
void * function2(void * arg);
pthread_t thr_A, thr_B;
int main( void )
{
pthread_create(&thr_A, NULL, function1, (void*)thr_B);
pthread_create(&thr_B, NULL, function2,NULL);
return 0;
}
void * function1(void * arg)
{
cout << "You are in thread A" << endl;
pthread_join(thr_B, NULL);
cout << "now you are again in thread A" << endl;
pthread_exit((void*)thr_A);
}
void * function2(void * arg)
{
cout << " you are in thread B " << endl ;
pthread_exit((void*)thr_B);
}