#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 1
int 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;
}
子线程循环 10 次,接着主线程循环 100 次
最新推荐文章于 2022-04-01 16:52:59 发布