LINUX.ORG.RU

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

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

Ну вот этот atomic флаг у меня и есть mutex. Какие-то дополнительные действия выполняются лишь если мы пытаемся залочить mutex бессрочно или с таймаутом. Если мы делаем tryLockMutex, то это банальный __sync_bool_compare_and_swap(&(mutex->flag), false, true). Оверхед разве что на вызов функции. Зато я получаю необходимую логику в schedulerSuspendTask, которая таки имеет право блокироваться и ждать.

Исходная версия KivApple, :

Ну вот этот atomic флаг у меня и есть mutex. Какие-то дополнительные действия выполняются лишь если мы пытаемся залочить mutex бессрочно или с таймаутом. Если мы делаем tryLockMutex, то это банальный __sync_bool_compare_and_swap(&mutex, false, true).