您的位置:首页 > 其它

取消一个线程

2012-07-02 20:23 148 查看
#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <pthread.h>

void *thread_function(void *arg);

int main()

{

int res;

pthread_t a_thread;

void *thread_result;

res=pthread_create(&a_thread,NULL,thread_function,NULL);

if(res!=0)

{

perror("thread creation failed");

exit(EXIT_FAILURE);

}

sleep(3);

printf("Canceling thread...\n");

res=pthread_cancel(a_thread);

if(res!=0)

{

perror("thread cancel failed");

exit(EXIT_FAILURE);

}

printf("Waiting for thread to finish...\n");

res=pthread_join(a_thread,&thread_result);

if(res!=0)

{

perror("Thread join failed");

exit(EXIT_FAILURE);

}

exit(EXIT_SUCCESS);

}

void *thread_function(void *arg)

{

int i,res;

res=pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);

if(res!=0)

{

perror("Thread pthread cancel failed");

exit(EXIT_FAILURE);

}

res=pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);

if(res!=0)

{

printf("Thread pthreadtype failed");

exit(EXIT_FAILURE);

}

printf("thread function is runnig\n");

for(i=0;i<10;i++)

{

printf("thread is still running (%d)...\n",i);

sleep(1);

}

pthread_exit(0);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: