pthread线程取消示例

来源:互联网 发布:淘宝在线云客服门户 编辑:程序博客网 时间:2024/05/22 15:11
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <pthread.h>#include <unistd.h>pthread_mutex_t lk = PTHREAD_MUTEX_INITIALIZER;pthread_t thread_id2;void work1(void *arg){    pthread_mutex_lock(&lk);    puts("thread 1 working");    pthread_mutex_unlock(&lk);    sleep(3);    pthread_mutex_lock(&lk);    pthread_cancel(thread_id2);    pthread_mutex_unlock(&lk);    int seconds = 5;    while(seconds--)    {        pthread_mutex_lock(&lk);        puts("thread2 was canceled, thread 1 continue working");        pthread_mutex_unlock(&lk);        sleep(1);    }}void work2(void *arg){    while(1)    {        sleep(1);        pthread_mutex_lock(&lk);        puts("thread 2 working");        pthread_mutex_unlock(&lk);    }}int main(){    pthread_t thread_id1;    pthread_create(&thread_id1, NULL, (void *)work1, NULL);    pthread_create(&thread_id2, NULL, (void *)work2, NULL);    pthread_join(thread_id1, NULL);    pthread_join(thread_id2, NULL);    return 0;}


运行结果:
thread 1 working
thread 2 working
thread 2 working
thread 2 working
thread2 was canceled, thread 1 continue working
thread2 was canceled, thread 1 continue working
thread2 was canceled, thread 1 continue working
thread2 was canceled, thread 1 continue working
thread2 was canceled, thread 1 continue working


PS:本篇仅为示例,终止其他线程并不是一个好的编程习惯。

0 0
原创粉丝点击