#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <errno.h>
int ticket = 30;
void *thread1(void)
{
while(1)
{
if(ticket > 0)
{
//sleep(1);
printf("A");
ticket--;
sleep(1);
}
else
{
break;
}
}
return NULL;
}
void *thread2(void)
{
while(1)
{
if(ticket > 0)
{
//sleep(1);
printf("B");
ticket--;
sleep(1);
}
else
{
break;
}
}
return NULL;
}
void *thread3(void)
{
while(1)
{
if(ticket > 0)
{
//sleep(1);
printf("C");
ticket--;
sleep(1);
}
else
{
break;
}
}
return NULL;
}
int main()
{
int i=0, ret=0;
pthread_t id1,id2,id3;
ret = pthread_create(&id1, NULL, (void*)thread1, NULL);
ret = pthread_create(&id2, NULL, (void*)thread2, NULL);
ret = pthread_create(&id3, NULL, (void*)thread3, NULL);
pthread_join(id1, NULL);
//printf("id1 exit!\n");
pthread_join(id2, NULL);
//printf("id2 exit!\n");
pthread_join(id3, NULL);
//printf("id3 exit!\n");
return 0;
}
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
本文通过一个简单的多线程票务系统示例介绍了如何使用 C 语言结合 pthread 库来实现并发处理。该示例展示了三个线程如何同时从初始值30开始递减票数,直至票数为0。此程序有助于理解线程同步的基本概念及线程间的竞争条件。

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



