#include <stdio.h>
#include <pthread.h>
#define THREAD_N 3
#define LOOP_M 10
int g_num[THREAD_N];
int g_flag = 0;
pthread_cond_t g_cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER;
void* print_thread(void *arg)
{
int param = (int)arg;
while (g_num[param]--)
{
pthread_mutex_lock(&g_lock);
while (param != g_flag)
{
pthread_cond_wait(&g_cond, &g_lock);
}
printf("%c", 'A' + param);
g_flag = ++g_flag % THREAD_N;
pthread_mutex_unlock(&g_lock);
pthread_cond_broadcast(&g_cond);
}
}
int main()
{
pthread_t pid[THREAD_N];
int i;
for (i = 0; i < THREAD_N; ++i)
{
g_num[i] = LOOP_M;
pthread_create(&pid[i], NULL, print_thread, (void *)i);
}
for (i = 0; i < THREAD_N; ++i)
pthread_join(pid[i], NULL);
return 0;
}N个线程顺序输出,循环M遍
最新推荐文章于 2024-08-15 13:57:26 发布
本文介绍了一个使用 C 语言实现的多线程程序示例。该程序创建了三个线程,每个线程负责打印一个字符,通过信号量和互斥锁确保线程按指定顺序执行。此示例展示了如何利用 pthreads 库进行线程同步。

504

被折叠的 条评论
为什么被折叠?



