linux 2.4.18 为什么读写信号量(rw_semaphore)最多支持32766个等待进程?
时间:2010-12-10
来源:互联网
本帖最后由 铁蛋小灯泡 于 2010-12-10 14:31 编辑
/* The value of WAITING_BIAS supports up to 32766 waiting processes. This can
* be extended to 65534 by manually checking the whole MSW rather than relying
* on the S flag.
*/
复制代码
上面的注释说: WAITING_BIAS最多可支持32766个等待者。
可是我觉得应该是32767个啊。(考虑一种场景,首先有一个写者进程,然后来了32767个读者进程在等待)
MSW (最高有效字,即count的高16位)
第一个等待者------ -2
第二个等待着------ -3
第32767个等待者-- -32768
/* The value of WAITING_BIAS supports up to 32766 waiting processes. This can
* be extended to 65534 by manually checking the whole MSW rather than relying
* on the S flag.
*/
- struct rw_semaphore {
- signed long count;
- #define RWSEM_UNLOCKED_VALUE 0x00000000
- #define RWSEM_ACTIVE_BIAS 0x00000001
- #define RWSEM_ACTIVE_MASK 0x0000ffff
- #define RWSEM_WAITING_BIAS (-0x00010000)
- #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
- #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
- spinlock_t wait_lock;
- struct list_head wait_list;
- #if RWSEM_DEBUG
- int debug;
- #endif
- };
可是我觉得应该是32767个啊。(考虑一种场景,首先有一个写者进程,然后来了32767个读者进程在等待)
MSW (最高有效字,即count的高16位)
第一个等待者------ -2
第二个等待着------ -3
第32767个等待者-- -32768
作者: 铁蛋小灯泡 发布时间: 2010-12-10
考虑实际情况,PID是有个数限制的。而且,内核对进程数也有限制,我记得是32000。
作者: liuyangxky 发布时间: 2010-12-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28