【求助】在主线程里如何终止子线程的执行?
示例代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
void* func(void *)
{
while (1)
{
;
}
return NULL;
}
int main(int argc, char *argv[])
{
pthread_t thrd;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if ( pthread_create(&thrd, &attr, func, NULL) )
{
perror("pthread_create error");
exit(EXIT_FAILURE);
}
if ( !pthread_cancel(thrd) )
{
printf( "pthread_cancel OK\n" );
}
sleep( 10 );
return 0;
}
//pthread_cancel执行成功了,但是子线程仍然在内存里运行,请问这是为什么呢?