您的位置:首页 > 编程语言

(某培训机构的练习题)子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。

2013-10-15 20:58 691 查看
从题目看,首先想到是使用条件变量来实现,以下是实现代码:

#include <iostream>
#include <stdlib.h>
#include <pthread.h>
using namespace std;

pthread_mutex_t myloack=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t mycond=PTHREAD_COND_INITIALIZER;
int n=0;
void *TreadFuncMa(void *arg)
{
for (int i = 0; i < 50; ++i)
{
pthread_mutex_lock(&myloack);

if(n!=0)
pthread_cond_wait(&mycond,&myloack);

for (int i = 0; i < 10; ++i)
cout<<"A"<<" ";

cout<<endl;
n++;

pthread_mutex_unlock(&myloack);
pthread_cond_broadcast(&mycond);
}
return (void *)0;
}
int  main(int argc, char const *argv[])
{
pthread_t id;
int ret=pthread_create(&id,NULL,TreadFuncMa,NULL);
if (rt!=0)
{
return 0;
}

/* code */
for (int i = 0; i < 50; ++i)
{
pthread_mutex_lock(&myloack);

if(n!=1)
pthread_cond_wait(&mycond,&myloack);

for (int i = 0; i < 100; ++i)
cout<<"B"<<" ";

cout<<endl;
n--;

pthread_mutex_unlock(&myloack);
pthread_cond_broadcast(&mycond);
}
pthread_join(id,NULL);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐