编程实现三个线程ABC,并让它们顺次打印ABC
来源:牛客网的BAT经典面试题
思路:设置三个信号量:S1, S2, S3,S2由S1 post,S3由S2 post, S1由S3 post,由A线程先开始打印,其他线程必然在等待信号量,所以三个线程一定会按照信号量的顺序来打印。
注意vs 2015中多线程使用要调用windows下的API。一般在Linux下用操作系统中讲到的POSIX那一套。
代码实现:
/*
* 3个线程逐个执行打印,线程依次控制下一个线程的信号量
*/
#include <stdio.h>
#include <sys/types.h>
#include <semaphore.h>
#include <pthread.h>
sem_t sem_id1, sem_id2, sem_id3;
void * func1(void *);
void * func2(void *);
void * func3(