1、unistd.htime.husing namespace std;string getTime() /获取系统时间time_t timep;time(&timep);char tmp64;strftime(tmp,sizeof(tmp),%Y-%m-%d%H:%M:%S,localtime(&timep);return tmp;int main()while (true)string tmn = getTime();cout Those output come from child, tmn cstdiopid_t pid;pid = fork();if (pid = -1) cout pt
2、hread.hint shared_var = 0;void * thread(void * arg)while (1)printf(in the thread shared_var:%dn, -shared_var);pthread_t pt;int ret = pthread_create(&pt, NULL, (void*)thread, NULL);if (ret != 0) printf(fail to create threadnin the main shared_var:, +shared_var);pthread_join(pt, NULL);return 0;1.生产者消费
3、者问题(信号量)参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。为了使得程序的输出易于看到结果,仿照的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。可选的实验:在上面实验的基础上实现部分消费者有选择地消费某些产品。例如一个消费者只消费小写字符,一个消费者只消费大写字母,而另一个消费者则无选择地消费任何产品。消费者要消费的产品没有时,消费者进程被阻塞。注意缓冲的管理。2.用线程实现睡觉的理发
4、师问题,(同步互斥方式采用信号量或mutex方式均可)理发师问题的描述:一个理发店接待室有n张椅子,工作室有1张椅子;没有顾客时,理发师睡觉;第一个顾客来到时,必须将理发师唤醒;顾客来时如果还有空座的话,他就坐在一个座位上等待;如果顾客来时没有空座位了,他就离开,不理发了;当理发师处理完所有顾客,而又没有新顾客来时,他又开始睡觉。3.读者写者问题教材中对读者写者问题算法均有描述,但这个算法在不断地有读者流的情况下,写者会被阻塞。编写一个写者优先解决读者写者问题的程序,其中读者和写者均是多个进程,用信号量作为同步互斥机制。1.生产者消费者问题(pro_con.c) semaphore.hmall
5、oc.h#define N 10 /缓冲区大小为100char *buffer;int capacity = N;sem_t mutex, empty, full;void * produce_1() while (1) sem_wait(&empty);mutex); int r1 = rand() % 26; int ju = 0; for(int i = 0; i = &bufferi & bufferi )消费者3号消费一个产品 :没有产品可以消费! int r5 = rand() % 26; usleep(r5 * 100000); buffer = (char*)malloc(N * sizeof(char*); bufferi = sem_init(&mutex, 1, 1);empty, 0, N);full, 0, 0); srand(time(0); pthread_t tid5; pthread_at
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1