美文网首页
pthread_cancel

pthread_cancel

作者: 糖鸡丝 | 来源:发表于2021-08-12 17:46 被阅读0次

    1.pthread_cancel

    pthread_cancel()函数不是直接使得线程退出,而是在系统调用中设置一个cancelpoint,当有系统调用函数的时候就会检查是有设置了这个cancelpoint,如果设置了那么就退出线程,相反不退出。

    代码举例:

    static void* pthread_func1(void* arg)
    {
        while(1)
        {
            printf("haha\n");
            sleep(1);
        }
        return NULL;
    }
    static void* pthread_func2(void* arg)
    {
        int a = 0;
        for( ;; )
            a++;
        return NULL;
    }
    
    int main(int argc, char const *argv[]) {
        pthread_t tid;
        pthread_create(&tid, NULL, pthread_func1, NULL);
        #pthread_create(&tid, NULL, pthread_func2, NULL);
    
        pthread_cancel(tid);
        pthread_join(tid, NULL);
        return 0;
    }
    

    当调用为pthread_func1时,会走到sleep(系统调用)时,退出线程;
    而当调用为pthread_func2时,将会一直循环下去,因为没有触发系统调用。
    系统调用常见:man page for syscalls

    相关文章

      网友评论

          本文标题:pthread_cancel

          本文链接:https://www.haomeiwen.com/subject/dknlbltx.html