如果您尝试将信号量初始化为负值会发生什么

问题描述 投票:0回答:1

如果您尝试将信号量初始化为负值会发生什么

例如

semaphore s = -1;

我知道它没有意义,但我想知道你是否这样做,会得到错误信息,你的程序将无法执行;或者没有错误消息,您将在以后遇到逻辑错误。

initialization semaphore
1个回答
3
投票

正如你所说,它没有意义,因为二进制信号量应该只取值0和1,而计数信号量应该只取非负整数值。但是,为了回答你的问题,我认为程序对信号量初始化为负值的反应将取决于编程语言。

我用C#试一试,我可以这么说

private static Semaphore _pool = new Semaphore(-1, 3);

回报

System.ArgumentOutOfRangeException:'需要非负数。参数名称:initialCount'

© www.soinside.com 2019 - 2024. All rights reserved.