下面是我用标准C库里的pthread实现的。
发现:
线程A退出销毁时,并没有销毁线程B。
这个又该如何解释?
编译指令: g++ -o mthread mthread.cpp -l pthread
mthread.cpp如下:
using namespace std;
#include <iostream>
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
int run_A=0;
int run_B=100;
void *thread_function_B(void *arg){
while(run_B<1000)
{
cout<<"run_B=="<<run_B++<<endl;
sleep(2);
}
pthread_exit(NULL);
}
void *thread_function_A(void *arg)
{
pthread_t b_thread;
pthread_create(&b_thread,NULL,thread_function_B,NULL);
//pthread_join(b_thread,NULL);
while(run_A<5)
{
cout<<"run_A=="<<run_A++<<endl;;
sleep(2);
}
pthread_exit(NULL);
}
int main()
{
pthread_t a_thread;
pthread_create(&a_thread,NULL,thread_function_A,NULL); /*创建一个进程*/
pthread_join(a_thread,NULL); //*等待子线程结束*/
while(run_A<1000)
{
cout<<"run_A=============="<<run_A++<<endl;
sleep(2);
}
exit(0);
}