> А я чего-то не вкурю никак откуда проблеме-то взяться... По идее у тебя три
> процесса должны крутиться. Один поставляет данные для обработки, второй их
> обрабатывает, третий записывает результаты на диск.  Когда какому-то из
> процессов нечего делать, он просто ждет когда другой обеспечит его работой.
> Как при такой схеме deadlock-то получиться?

deadlock-ов нет. Это одна из веток моих мыслей о принципах работы
многопоточного кэша.

А сама задача такая:

Нужно сгенерировать 350 млн комбинаций. Из них половина - дубли. В
итоге, меня интересуют только уникальные комбинации.

То есть каждую комбинацию нужно найти среди ранее сгенерированных.

На 400MB памяти я могу хранить где-то 10-11 млн комбинаций. Остальное,
получается, выгружается на диск.

Сейчас у меня на диск пишет тот поток, кому не хватило место в кэше.
Пока он пишет, кэш заблокирован.

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

Коваленко Дмитрий.

Ответить