91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-27
  • 語言: 其他
  • 標簽: Linux??多線程??

資源簡介

根據題目中描述的助教和學生的行為 需要兩類線程 program 和student 其中 助教的活動有編程和睡覺兩個事件 學生有等待和編程兩個事件 走廊上有三個椅子 上面坐著等待的學生 學生到后 需判斷有沒有空閑的椅子 助教決定要教學或睡覺時 也要判斷椅子上有沒有學生 所以助教和學生之間的關系表現為: (1)助教和學生之間的同步關系:當助教睡覺時 學生進來需要喚醒助教 當有學生時 助教教其編程 沒有的時候助教睡覺 (2)助教和學生之間的互斥關系:由于每次助教只能幫一個學生 且可供等待的椅子只有3把 即助教和椅子是臨界資源 所以學生之間是互斥關系 (3)引入三個信號量和一個控制變量: 控制變量waiting用來記錄等待的學生數 初值為0; 信號量students用來表示等待的學生 初值為0; 信號量ta用來表示助教 初值為1; 信號量mutex用于互斥 初值為1;">根據題目中描述的助教和學生的行為 需要兩類線程 program 和student 其中 助教的活動有編程和睡覺兩個事件 學生有等待和編程兩個事件 走廊上有三個椅子 上面坐著等待的學生 學生到后 需判斷有沒有空閑的椅子 [更多]

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include
#include
#include
#define?n?3


sem_t?mutexstudentsta;
int?waiting=0;
int?chair[3];?
void?*?program();
void?*?student(void?*arg);
int?main(int?argcchar?*argv[])
{
?
pthread_t?student_id[10]ta_id;
int?i;
sem_init(&mutex01);
sem_init(&students00);
sem_init(&ta01);
pthread_create(&ta_idNULL(void*)programNULL);
for(i=0;i<20;i++){
sleep(2);
pthread_create(&student_id[i]NULL(void*)student(void*)(i+1));
}
for?(i=0;i<20;i++)
pthread_join(student_id[i]NULL);
pthread_join(ta_idNULL);
return?0;
}

void?*?program()
{
int?

評論

共有 條評論