Простите, тот псевдокод, что приведен по странице википедии, обладает той же проблемой - тред, делающий операцию P может крутиться в цикле даже если и значение S подскочит выше, чем I. Поскольку другой тред, да даже и тот, кто сигналил, может это значение тут же обнулить, а первый тред ничего не заметит.
Т.е. управление счетчиком тут, конечно, атомарное, но атомарности wake up and gain the semaphore не наблюдается.
no subject
Т.е. управление счетчиком тут, конечно, атомарное, но атомарности wake up and gain the semaphore не наблюдается.