Adi*_*369 10 concurrency multithreading semaphore
可以在信号量上执行的P()和V()操作是否保证原子?信号量可以阻止两个进程进入P()吗?
假设我们有一个二进制信号量s,其值为1,并且两个进程同时尝试在s上执行P. 这些操作中只有一个能够在s上的下一个V操作之前完成; 尝试执行P操作的其他进程被暂停.
取自我的大学笔记:
我们可以认为P和V是否可以控制对资源的访问:
当进程想要使用该资源时,它执行P操作:如果成功,则减少可用资源量并继续该进程; 如果当前正在使用所有资源,则该过程必须等待.
当一个进程完成资源时,它执行一个V操作:如果有进程等待资源,其中一个被唤醒;
如果没有等待进程,则信号量增加,表明现在有更多资源可用.请注意,如果在同一个信号量上挂起了多个进程,则V的定义不会指定唤醒哪个进程.
信号量可以解决互斥和条件同步问题.所以你的问题的答案是:是的.
| 归档时间: |
|
| 查看次数: |
8470 次 |
| 最近记录: |