- 论坛徽章:
- 0
|
void clean ( void * p )
{
printf ( "clean()\n" );
}
void * thread ( void * p )
{
pthread_cleanup_push( clean, NULL);
printf ( "thread sleep\n" );
sleep (10);
pthread_cleanup_pop(0);
}
int main ()
{
pthread_t id;
pthread_mutexattr_t attr;
pthread_create ( &id, NULL, thread, NULL );
printf ( "main sleep\n" ;
sleep(3);
printf ( "cancel thread:%u\n", id );
pthread_cancel ( id );
return 0;
}
输出:
thread sleep
main sleep
cancel thread:1082399936
//////////////////////////////////////////////////////////
不明白为何没有输出clean()
也就是pthread_cleanup_push根本不起作用
那位大虾能说说原因吗?
多谢 |
|