LINUX.ORG.RU

История изменений

Исправление shkolnick-kun, (текущая версия) :

У тебя неправильное понимание того, как работает синхронизация потоков с условными переменными.

Во-первых, как уже сказали, нельзя делать броадкаст при разлоченном мьютексе в resume.

Во-вторых, из-за того, что ты делаешь lock и unlock в sleep у тебя возникает гонка с потерей события resume.

В-третьих, «взводит некую переменную-флаг» и «сбрасывает флаг» должно происходить строго при залоченном мьютексе.

В-четвертых, все что сделал дальше - лютый костыле_велосипед_с_квадратными_колесами.

Исходная версия shkolnick-kun, :

У тебя неправильное понимание того, как работает синхронизация потоков с условными переменными.

Во-первых, как уже сказали, нельза делать броадкаст при разлоченном мьютексе в resume.

Во-вторых, из-за того, что ты делаешь lock и unlock в sleep у тебя возникает гонка с потерей события resume.

В-третьих, «взводит некую переменную-флаг» и «сбрасывает флаг» должно происходить строго при залоченном мьютексе.

В-четвертых, все что сделал дальше - лютый костыле_велосипед_с_квадратными_колесами.