abc顺序打印是通过信号量实现的
代码如下sem_pthread.c:
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
static sem_t num1, num2, num3;
void* process1(void *arg)
{
int i = 0;
for (i = 0; i < 10; i++)
{
sem_wait(&num1);
printf("a\n");
sem_post(&num2);
}
return NULL;
}
void* process2(void *arg)
{
int i = 0;
for (i = 0; i < 10; i++)
{
sem_wait(&num2);
printf("b\n");
sem_post(&num3);
}
return NULL;
}
void* process3(void *arg)
{
int i = 0;
for (i = 0; i < 10; i++)
{
sem_wait(&num3);
printf("c\n");
sem_post(&num1);
}
return NULL;
}
int main(int argc, char *argv[])
{
pthread_t tid1, tid2, tid3;
sem_init(&num1, 0, 1);
sem_init(&num2, 0, 0);
sem_init(&