История изменений
Исправление alysnix, (текущая версия) :
мутекс нужен для создания «охраняемого участка» то есть участка кода, выполняемого тредом монопольно. и больше ни для чего. не надо его втыкать везде.
мьютекс - реализация охраняемых участков
семафор - для вставания в ожидание нечта - простые ожидания неких ивентов.
кондвар - для вставания ожидания нечта с залокнутым мьютексом - для реализации ожиданий на охраняемых участках.
в общем виде: для сигнала треду о выходе делается выставление некоего булева признака, и его периодическая проверка тредом при выходе из ожиданий по таймауту. но для этого надо все ожидания делать с таймаутом, что истинно верно, если ты хочешь писать нормальный код, который не застрянет навсегда в ожидании того, что не придет.
Исходная версия alysnix, :
мутекс нужен для создания «охраняемого участка» то есть участка кода, выполняемого тредом монопольно. и больше ни для чего. не надо его втыкать везде.
мьютекс - реализация охраняемых участков
семафор - для вставания в ожидание нечта - простые ожидания неких ивентов.
кондвар - для вставания ожидания нечта с залокнутым мьютексом - для реализации ожиданий на охраняемых участках.
в общем виде: для сигнала треду о выходе делается выставление некоего булева признака, и его периодическая проверка тредом при выходе из ожиданий по таймауту.