信号灯和监视器有什么区别?

监视器信号量之间的主要区别是什么

监视器是设计用于从多个线程访问的对象。监视器对象的成员函数或方法将强制互斥,因此在给定时间只有一个线程可以对该对象执行任何操作。如果一个线程当前正在执行该对象的成员函数,那么尝试调用该对象成员函数的任何其他线程都必须等待第一个线程完成

信号量是较低级别的对象。您可以使用信号量来实现监视器。信号量本质上只是一个计数器。当计数器为正时,如果线程尝试获取信号量,则允许该信号量,并且计数器将递减。当一个线程完成后,它释放信号量,并增加计数器

如果线程试图获取信号量时计数器已经为零,那么它必须等待另一个线程释放信号量。当一个线程释放信号量时,如果多个线程正在等待,那么其中一个线程将获得信号量。释放信号量的线程不必与获取信号量的线程相同

显示器就像一个公共厕所。一次只能有一个人进入。他们锁上门以防其他人进来,做自己的事情,然后在离开时打开门锁

信号灯就像一个出租自行车的地方。他们有一定数量的自行车。如果你试着租一辆自行车,而他们有一辆是免费的,那么你可以租,否则你必须等待。当有人归还自行车时,其他人可以拿走。如果你有一辆自行车,你可以把它交给其他人归还——自行车租赁公司不在乎谁归还,只要他们把自行车取回

发表评论