美文网首页
linux c线程条件变量示例

linux c线程条件变量示例

作者: 一路向后 | 来源:发表于2021-08-22 19:25 被阅读0次

    1.源码实现

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <signal.h>
    
    /*让线程2先于线程1执行*/
    pthread_mutex_t lock;
    pthread_cond_t cond;
    
    void *thread_1(void *data)
    {
        pthread_mutex_lock(&lock);
        pthread_cond_wait(&cond, &lock);
        printf("%s\n", __func__);
        pthread_mutex_unlock(&lock);
    }
    
    void *thread_2(void *data)
    {
        pthread_mutex_lock(&lock);
        printf("%s\n", __func__);
        pthread_mutex_unlock(&lock);
    
        sleep(6);
    
        pthread_cond_signal(&cond);
    }
    
    int main()
    {
        pthread_t tid[2];
    
        pthread_mutex_init(&lock, NULL);
        pthread_cond_init(&cond, NULL);
    
        pthread_create(&tid[0], NULL, thread_1, NULL);
        pthread_create(&tid[1], NULL, thread_2, NULL);
    
        sleep(1);
    
        //pthread_mutex_unlock(&lock);
        pthread_mutex_destroy(&lock);
        pthread_cond_destroy(&cond);
    
        pthread_join(tid[0], NULL);
        pthread_join(tid[1], NULL);
    
        return 0;
    }
    

    2.编译源码

     $ gcc -o example example.c -lpthread
    

    3.运行及其结果

    $ ./example
    thread_2
    thread_1
    

    相关文章

      网友评论

          本文标题:linux c线程条件变量示例

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