我是论坛和一般编程领域的新手。目前,我学习“操作系统”和Java。 本周我们开始了“信号量”主题,在我看来,这有点令人困惑。 我有这个练习:
共享变量numberofworks = 0
EmployeeA { while (True) { A_works_outside(); A_works_inside(); numberofworks =numberofworks + 1; } } EmployeeB { while (True) { B_works_outside(); B_works_inside(); numberofworks =numberofworks + 1; } }
好吧,本练习要使用信号量(P和V)
A_works_inside()
仅在B_works_outside()完成时运行在重复EmployeeB的过程中,Β_works_inside()
仅在Α_works_outside()完成时运行
变量numberofworks
必须是numberofworksA + numberofworksB
我必须用Java和“操作系统”编写代码 在帮助我进行此练习之前(如果可以的话)在信号量方面的一般性问题: 互斥锁和sempahore之间的基本区别是什么? 以及我该如何理解何时使用互斥锁?
答案 0 :(得分:0)
尝试使用受互斥对象保护的资源:
const mouseenter$ = fromEvent(nativeElement, 'mouseenter');
const mouseleave$ = fromEvent(nativeElement, 'mouseleave');
const click$ = fromEvent(nativeElement, 'click');
this.open$ = merge(
mouseenter$.pipe(mapTo(true)),
mouseleave$.pipe(mapTo(false)),
click$.pipe(mapTo(null)),
).pipe(
scan((acc, current) => current === null ? !acc : current, false),
startWith(false),
distinctUntilChanged(),
);
尝试使用受信号量保护的资源:
- Hi! Can I ?
*If free*
- Yup go on.
*Else*
- No, go away!