多线程题目

    xiaoxiao2021-12-14  18

    #include <stdio.h> #include <stdlib.h> #include <pthread.h> #define NUM 4 pthread_mutex_t mutex; pthread_cond_t cond; int n = 0; void *thread_func(void *argv) { int p = (int)argv; int i; for(i = 0; i < 10; i++) { pthread_mutex_lock(&mutex); while(p != n) { pthread_cond_wait(&cond,&mutex); } printf("%d ",p+1); n= (n + 1) % NUM; pthread_mutex_unlock(&mutex); pthread_cond_broadcast(&cond); } } int main() { pthread_t tid[NUM]; int ret; int i; pthread_mutex_init(&mutex,NULL); pthread_cond_init(&cond,NULL); for(i = 0; i< NUM; i++) { ret = pthread_create(&tid[i],NULL,thread_func,(void *)i); if(ret == -1) { printf("pthread_create pid[%d] error!\n",i); exit(-1); } } for(i = 0; i < NUM; i++) { ret = pthread_join(tid[i],NULL); if(ret == -1) { printf("pthread_join pid[%d] error!\n",i); exit(-1); } } printf("\n");     return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-971745.html

    最新回复(0)