子线程循环 10 次,接着主线程循环 100 次

来源:互联网 发布:直播间人气软件 编辑:程序博客网 时间:2024/04/29 23:40

子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。

#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <string.h> #define LOOP 5int num = 0; int parm_0 = 0; int parm_1 = 1;pthread_mutex_t mylock = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t qready=PTHREAD_COND_INITIALIZER;void* thread_func(void *arg){    int i, j;    for(i = 0; i < LOOP; i++)    {        pthread_mutex_lock(&mylock);        while(parm_0 != num)            pthread_cond_wait(&qready, &mylock);            printf("thread: \n");        for(j = 0; j < 10; j++)            printf(" %d ", j);        printf("\n");                num = (num + 1) % 2;        pthread_mutex_unlock(&mylock);        pthread_cond_signal(&qready);    }        return (void*) 0;}int main(){    int i, k;    pthread_t tid;    void *tret;            pthread_create(&tid, NULL, thread_func, NULL);        for(i = 0; i < LOOP; i++)    {        pthread_mutex_lock(&mylock);                while(parm_1 != num)            pthread_cond_wait(&qready, &mylock);                printf("main: \n");        for(k = 0; k < 10; k++)            printf(" %d", k + 100);        printf("\n");                num = (num + 1) % 2;        pthread_mutex_unlock(&mylock);        pthread_cond_signal(&qready);    }        pthread_join(tid, &tret);    }


0 0
原创粉丝点击