您的位置:首页 > 其它

线程执行N次后,进程执行M次,如此循环S次

2015-03-13 12:28 176 查看
#include <stdio.h>
#include <pthread.h>

#define LOOP_S 10
#define PRT_M  2
#define PRT_N  1

int g_flag = 0;

pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t  g_cond = PTHREAD_COND_INITIALIZER;

void *thread_func(void *arg)
{
int i, j;
for (i = 0; i < LOOP_S; ++i)
{
pthread_mutex_lock(&g_lock);
while (g_flag > PRT_N - 1 || g_flag < 0)
pthread_cond_wait(&g_cond, &g_lock);

for (j = 0; j < PRT_N; ++j)
{
printf("%c", 'N');
++g_flag;
}

pthread_mutex_unlock(&g_lock);
pthread_cond_signal(&g_cond);
}
}

int main()
{
pthread_t pid;
pthread_create(&pid, NULL, thread_func, NULL);

int i, j;
for (i = 0; i < LOOP_S; ++i)
{
pthread_mutex_lock(&g_lock);
while (0 <= g_flag && g_flag < PRT_N)
pthread_cond_wait(&g_cond, &g_lock);

for (j = 0; j < PRT_M; ++j)
printf("%c", 'M');

g_flag = 0;
pthread_mutex_unlock(&g_lock);
pthread_cond_signal(&g_cond);
}

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