История изменений
Исправление 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).