1、线程三种退出方式:pthread_exit()、pthread_join()、pthread_cancel()
pthread_cancel():需要设置取消点
例程:
void
* func(
void
*)
{
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
//允许退出线程
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
//设置立即取消
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;
}
2、
c语言socket双向通信+一服务端对多客户端通信
https://blog.csdn.net/arunboy/article/details/78795064
3、Ubuntu下载网址