netch80: (Default)
[personal profile] netch80
Всякие cv.notify() пробуждают одного ждущего. Всегда есть вариант notifyAll(), это понятно. Иногда есть вариант одним вызовом пробудить нескольких, это не очень понятно (ну разве что для случая одновременного добавления толстой пачки заданий в очередь). Но не видно другого: где-то важно пробуждение в FIFO порядке, а где-то полезнее в LIFO (особенно во всяких пулах нитей, когда лучше передать новую задачу самой последней из завершившихся - её состояние ещё закэшировано, и всё такое).

Ожидаю увидеть интерфейс типа:

notifyFirst(count = 1)
notifyLast(count = 1)
notifyAll()

но нигде такого не видел. Почему?

Date: 2020-10-16 08:06 am (UTC)
From: [personal profile] muwlgr
если уже есть "очередь заданий", и какой-то синхронизированный интерфейс для её наполнения/освобождения, а также "пул нитей", тоже с каким-то порядком создания новых, выбора свободных и завершения простаивающих нитей в нём, то, возможно, добавление кондвара не сильно улучшит ситуацию. по крайней мере, добавление _одного_ кондвара, а не отдельного на каждую нить.

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 3rd, 2026 06:01 pm
Powered by Dreamwidth Studios