количества посетителей. Если з
Автор admin Пятница, 26 июня 2009 11:32
количества посетителей. Если закомментировать объект Guard в Count::increment(), вы заметите, что общее количество посетителей отличается от ожидаемого. Пока доступ к Counter синхронизируется при помощи мутекса, все работает нормально. Учтите, что Count::increment() нарочно увеличивает вероятность ошибки при помощи объекта temp и функции yieldQ. В реальных многопоточных программах вероят- Завершение задач 563 ность ошибки может оказаться статистически малой, поэтому у вас легко может создаться иллюзия, что все работает нормально. Как и в приведенном примере, могут существовать скрытые проблемы, с которыми вы просто еще не столкнулись, поэтому при написании многопоточного кода необходимо действовать предельно осторожно. При возврате значения count функция Count::value() использует объект Guard для синхронизации. Это довольно любопытная подробность, хотя вероятно, что данный код будет работать в большинстве систем и компиляторов и без синхронизации. Дело в том, что в общем случае простые операции вроде возврата int являются атомарными; это означает, что они выполняются одной командой микропроцессора, ко
Комментарии закрыты.
Последние комментарии