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

来源:互联网 发布:如何让增加淘宝流量 编辑:程序博客网 时间:2024/04/28 20:26
#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <string.h>#include <iostream>using namespace std;//#define DEBUG 1#define LOOP 2#define N 2#define x  0#define y   1int n=0;pthread_mutex_t mylock=PTHREAD_MUTEX_INITIALIZER;//互斥量pthread_cond_t qready=PTHREAD_COND_INITIALIZER;//条件变量void * thread_func(void *arg){    int ret,i=0;    for (; i < LOOP; i++)    {        pthread_mutex_lock(&mylock);        while (y != n)        { pthread_cond_wait(&qready, &mylock);        }       // printf("%d ",param+1);       n = (n+1)%N;for(int j =0;j<10;j++)cout << j;cout << endl;        pthread_mutex_unlock(&mylock);        pthread_cond_broadcast(&qready);    }        return (void *)0;}int main(int argc, char** argv) {        int i=0,err;    pthread_t tid;     //创建子线程      pthread_create(&tid,NULL,thread_func,(void *)i);  for(int i =0;i<LOOP;i++){pthread_mutex_lock(&mylock);while(x != n){pthread_cond_wait(&qready,&mylock);}n = (n+1)%N;for(int j =0;j<50;j++)cout << j;        pthread_cond_broadcast(&qready);pthread_mutex_unlock(&mylock);}    //等待子线程结束        err = pthread_join(tid, NULL);          printf("\n");    return 0;}


0 0
原创粉丝点击