计数和二进制信号量有什么区别。
我在某处看到的是,两者都可以控制 N 个请求资源的进程。
两者都拥有自由邦。
二进制信号量和计数信号量可以保护的资源数量是否有限制?
两者都只允许一个进程一次使用一种资源......
还有其他区别吗?上述属性是否正确?
实际上,这两种类型都用于同步对共享资源的访问,无论尝试访问的实体是进程还是线程。
区别如下:
二进制信号量是二进制的,它们只能有两个值;一个表示进程/线程位于临界区(访问共享资源的代码),其他进程/线程应该等待,另一个表示临界区空闲。
另一方面,计数信号量需要两个以上的值,它们可以是您想要的任何值。
它们采用的最大值 X 允许 X 个进程/线程同时访问共享资源。
有关更多信息,请查看此链接。
http://www.chibios.org/dokuwiki/doku.php?id=chibios:文章:semaphores_mutexes http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:semaphores_mutexes
EDIT
计数信号量可以采用的最大值是您希望同时允许进入临界区的进程数。
同样,您可能会遇到这样的情况:您希望排除某个资源,但您知道该资源可以由最大数量的进程(例如 X)访问,因此您设置了一个值为 X 的计数信号量。
这将允许 X 进程同时访问该资源;然而,进程 X+1 必须等待,直到临界区中的进程之一退出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)