Как вы сказали, это не имеет смысла, поскольку двоичные семафоры должны принимать только значения 0 и 1, тогда как подсчет семафоров должен принимать только неотрицательные целочисленные значения.Однако, чтобы ответить на ваш вопрос, я бы предположил, что реакция программы на семафор, инициализированный отрицательным значением, будет зависеть от языка программирования.
Я попробовал это на C # и могу сказать, что
private static Semaphore _pool = new Semaphore(-1, 3);
возвращает
System.ArgumentOutOfRangeException: 'Требуется неотрицательное число.Имя параметра: initialCount '