Это действительно зависит от политики, используемой при выборе потока, когда несколько потоков ждут down(lock)
.
например.
- Если эта политика основана на очереди, вы гарантированно будете голодать бесплатно.
- Если один из нескольких потоков ожидания выбран произвольно, то вы можете голодать от чистой неудачи.
- Если он основан на приоритете, то потоки с низким приоритетом будут голодать до тех пор, пока высокоприоритетные сохраняют запрос на блокировку.
Например, подсчет Java Semaphore
при создании может быть настроен как «справедливый» или нет. Здесь «справедливость» относится к тому факту, что ожидающие потоки будут помещены в FIFO, так что сначала будут выполняться нити, ожидающие наибольшего времени.
Похоже, что вы вставили псевдокод. Какой «семафор» - это «замок»? Что такое 'down' и' up'? – ArjunShankar
@ArjunShankar: Я бы предположил, что 'down' и' up' являются стандартными операциями, которые один связывает с семафором. –
В любом случае, предполагая, что 'down (lock)' является способом получения эксклюзивного доступа, это действительно зависит от того, справедливо ли «down (lock)». то есть, если на нем ожидают несколько потоков, какова логика, которая решает, кто из них побеждает. – ArjunShankar