如果您尝试将信号量初始化为负值会发生什么
What happens if you try to initialize a semaphore to a negative value
如果您尝试将信号量初始化为负值会发生什么
例如
semaphore s = -1;
我知道这没有意义,但我想知道如果你这样做,会得到错误信息并且你的程序不会执行;否则不会有任何错误信息,稍后您将遇到逻辑错误。
如您所说,这没有意义,因为二进制信号量应该只取值 0 和 1,而计数信号量应该只取非负整数值。
但是,为了回答您的问题,我假设程序对初始化为负值的信号量的反应取决于编程语言。
我用 C# 试了一下,我可以这么说
private static Semaphore _pool = new Semaphore(-1, 3);
returns
System.ArgumentOutOfRangeException: 'Non-negative number required.
Parameter name: initialCount'
如果您尝试将信号量初始化为负值会发生什么
例如
semaphore s = -1;
我知道这没有意义,但我想知道如果你这样做,会得到错误信息并且你的程序不会执行;否则不会有任何错误信息,稍后您将遇到逻辑错误。
如您所说,这没有意义,因为二进制信号量应该只取值 0 和 1,而计数信号量应该只取非负整数值。 但是,为了回答您的问题,我假设程序对初始化为负值的信号量的反应取决于编程语言。
我用 C# 试了一下,我可以这么说
private static Semaphore _pool = new Semaphore(-1, 3);
returns
System.ArgumentOutOfRangeException: 'Non-negative number required. Parameter name: initialCount'