【发布时间】:2019-05-26 16:44:17
【问题描述】:
我被这个任务困住了,我无法理解它。
假设有一排游客在排队等候进入其中一辆车。一次只能开一辆车到站台接 2 个等候的人。一旦有 2 名访客进入汽车,它就必须离开平台。
我需要将以下方法“carArrives()”和“visitorArrives()”从 Busy - Waiting 更改为仅使用 Mutex 或 Semaphores。
如有错误请见谅。
int availableCars = 0;
int availableSeats = 0;
void carArrives(){
while(availableCars > 0){noop;} //exchange this with Mutex/Semaphore
availableCars = 1;
driveToPlatform();
openDoors();
availableSeats = 2;
while(availableSeats > 0){noop;} //exchange this with Mutex/Semaphore
closeDoors();
leavePlatform();
availableCars = 0;
}
void visitorArrives(){
while(availableSeats < 1){noop;} //exchange this with Mutex/Semaphore
enterCar();
availableSeats = availableSeats - 1;
}
【问题讨论】:
-
太棒了!我希望你能通过解决这个问题学到很多东西。你有问题吗?因为我什么都看不到。 “请做我的功课”也不是问题。
-
OT:关于像这样的陈述:
while(availableCars > 0){noop;}这会更好写成:while(availableCars > 0){;} -
@user3629249,甚至只使用
;而不使用花括号{}。但它应该使用信号量或互斥量来做某事......然后他从不使用它们...... 8-.
标签: c synchronization mutex semaphore