zoukankan      html  css  js  c++  java
  • pthread_mutex_lock

    #include <pthread.h> 
    #include <unistd.h> 
    #include <string.h>
    #include <iostream>
     
    static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; 
    static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; 
     
    struct node { 
    int n_number; 
    struct node *n_next; 
    } *head = NULL; 
     
    /*[thread_func]*/ 
    static void cleanup_handler(void *arg) 

        printf("Cleanup handler of second thread./n"); 
        free(arg); 
        (void)pthread_mutex_unlock(&mtx); 

    static void *thread_func(void *arg) 

        struct node *p = NULL; 
     
        pthread_cleanup_push(cleanup_handler, p); 
        while (1) { 
        pthread_mutex_lock(&mtx);      
        while (head == NULL)   {       
            pthread_cond_wait(&cond, &mtx);
        }
            p = head; 
            head = head->n_next; 
            printf("Got %d from front of queue/n", p->n_number); 
            free(p); 
            pthread_mutex_unlock(&mtx);
        }
        pthread_cleanup_pop(0);
        return 0;
    }
     
    int main(void) 

        pthread_t tid; 
        int i; 
        struct node *p; 
        pthread_create(&tid, NULL, thread_func, NULL);
        for (i = 0; i < 10; i++) { 
            p = (node*)malloc(sizeof(struct node)); 
            p->n_number = i; 
            pthread_mutex_lock(&mtx);           
            p->n_next = head; 
            head = p; 
            pthread_cond_signal(&cond); 
            pthread_mutex_unlock(&mtx);         
            sleep(1); 
        } 
        printf("thread 1 wanna end the line.So cancel thread 2./n"); 
        pthread_cancel(tid);       
        pthread_join(tid, NULL); 
        printf("All done -- exiting/n"); 
        return 0; 

  • 相关阅读:
    反射 Reflection
    后台输出的数据进行字符判断,小数点后边是0不显示,不是0显示
    判断input内的字符是不是数字或字母
    手机端底部按钮隐藏与显示
    CSS改变checkbox样式
    js小数取整 小数保留两位
    如何判断打开页面时使用的设备?
    H5 拖放实例
    根据手机系统引入不同的css文件
    HTML 5 video 视频标签全属性详解(转)
  • 原文地址:https://www.cnblogs.com/greencolor/p/2221547.html
Copyright © 2011-2022 走看看