c pthread_cond_t demostración

// 
// creado por GXF el 24/03/2020. 
// 

#include <stdio.h> 
#include <pthread.h> 
#include <stdlib.h> 
#include <unistd.h> 

pthread_mutex_t bloqueo = PTHREAD_MUTEX_INITIALIZER; 
pthread_cond_t cond = PTHREAD_COND_INITIALIZER; 

typedef struct ListNode_S { 
    de datos INT; 
    ListNode_S struct * siguiente; 
}nodo; 

nodo * cabeza = NULL; 

vacío del consumidor () { 
    while (1) { 
        pthread_mutex_lock (y bloqueo); 
        mientras que (NULL == cabeza) { 
            printf ( "en la cabeza del consumidor es nulo \ n"); 
            pthread_cond_wait (y cond, y la cerradura); 
        } 
        Nodo * tmp = cabeza;
        dirigirse = cabeza-> siguiente; 
        printf ( "datos de consumo:% d \ n", TMP-> datos); 
        libre (TMP); 
        pthread_mutex_unlock (y la cerradura); 
    } 
} 

Int main () { 
    pthread_t consumserThread; 
    pthread_create (y consumserThread, NULL, consumidor, NULL); 
    for (int i = 0; i <10; i ++) { 
        pthread_mutex_lock (y la cerradura); 
        nodo * tmp = malloc (sizeof (nodo)); 
        TMP-> data = i; 
        TMP-> siguiente = cabeza; 
        printf ( "datos a producir:% d \ n", TMP-> datos); 
        cabeza = tmp; 
        pthread_cond_signal (y cond); 
        pthread_mutex_unlock (y la cerradura); 
        sueño (1); 
    }

    pthread_join (consumserThread, NULL); 

    return 0; 
}

  

Supongo que te gusta

Origin www.cnblogs.com/luckygxf/p/12556472.html
Recomendado
Clasificación