Что произойдет, если вы попытаетесь инициализировать семафор с отрицательным значением - PullRequest
0 голосов
/ 14 апреля 2019

Что произойдет, если вы попытаетесь инициализировать семафор с отрицательным значением

например

semaphore s = -1;

Я знаю, что это не имеет смысла, но я хочу знать, если вы сделаете это, получите сообщения об ошибках, и ваша программа не будет выполняться; или сообщений об ошибках не будет, и позже вы столкнетесь с логическими ошибками.

1 Ответ

3 голосов
/ 14 апреля 2019

Как вы сказали, это не имеет смысла, поскольку двоичные семафоры должны принимать только значения 0 и 1, тогда как подсчет семафоров должен принимать только неотрицательные целочисленные значения.Однако, чтобы ответить на ваш вопрос, я бы предположил, что реакция программы на семафор, инициализированный отрицательным значением, будет зависеть от языка программирования.

Я попробовал это на C # и могу сказать, что

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

возвращает

System.ArgumentOutOfRangeException: 'Требуется неотрицательное число.Имя параметра: initialCount '

...