Java требует, чтобы поток владел монитором o
перед вызовом o.wait()
или o.notify()
. Это общеизвестный факт. Однако существуют ли блокировки мьютексов, которые необходимы для любого такого механизма? Что, если был API, который предоставил
compareAndWait
и
setAndNotify
вместо этого, комбинируя действие CAS с планированием/десулингом потоков? Это будет иметь некоторые преимущества:
-
потоки, входящие в состояние ожидания, не будут препятствовать выполнению уведомлений о потоках;
-
им также не придется ждать друг друга, прежде чем им разрешат проверить состояние ожидания;
-
на уведомляющей стороне может продолжаться любое число потоков производителей.
Есть ли фундаментальное, непреодолимое препятствие для предоставления такого API?