20.07.2015 13:43, Андрей Чуйкин пишет:
> Внимание. Текущая реализация данной функциональности в общем случае
> не работает. Но уже придумано решение без недостатков (и совершенно
> без накладных run-time расходов). Но реализация потребует времени.
> Так что надо пока не использовать эту функциональность. И может быть
> откатить назад внесенные изменения.
Наверное, мы неправильно поступили, внося фичу сразу в trunk, всё-таки
для этого служат ветки. К сожалению, svn не поощряет работу с ветками.
Поскольку внесённые изменения не портят работу остального и не мешают
тем, кто не использует данную фичу, то не вижу смысла что-либо менять на
данном этапе. Даже если кто-то сделает checkout/export trunk::HEAD, то
он получит работосособный код, а про эту фичу он и знать не будет знать
до тех пор, пока она не будет документирована.
> Проблема вот в чем. Если процесс-инициализатор самый приоритетный и,
> если в процессе инициализации, он не отдавал управление, то ни одна
> инструкция остальных процессов выполнена не будет, в том числе и
> инструкция sleep(0) в функции suspended_exec(). Поэтому, когда
> процесс-инициализатор будет будить suspended процессы, ни один из них
> в спящем состоянии находится не будет и команды force_wake_up будут
> "пустыми". А когда процесс-инициализатор отдаст управление,
> выполнится упомянутая выше sleep(0), что приведет к подвисанию
> процесса.
>
А может, делать процесс-инициализатор не самым приоритетным, а наоборот?
Или это как-то противоречит исходному замыслу?
--
HZ