代码:
#include <iostream>
#include <pthread.h>
#include <unistd.h>
using namespace std;
void *threadRoutine(void *args)
{
int i=0;
while(true)
{
cout << "新线程:"<< (char*)args << " running ... " <<endl;
sleep(1);
//if(i++ == 10)break;
}
cout << "new thread quit ..." << endl;
// return (void *)10;
}
int main()
{
pthread_t tid;
pthread_create(&tid,nullptr,threadRoutine,(void *)"thread 1");
int count=0;
while(true)
{
cout<<" main线程 "<<" running ... " <<endl;
sleep(1);
count++;
if(count >= 5) break;
}
pthread_cancel(tid);
cout<< " new thread cancel: "<<tid<<endl;
sleep(5);
void *ret = nullptr;
pthread_join(tid,&ret);
cout << "main thread wait done...main quit ...: new thread quit : " << (long long)ret <<"\n";
return 0;
}
运行结果: