осится на другой компьютер, и
Автор admin Пятница, 26 июня 2009 11:32
осится на другой компьютер, и сойдет с ума, пытаясь выявить нерегулярные ошибки, вызванные многопоточными коллизиями. Итак, хотя удаление стража из Count::value() вроде бы не отражается на работе программы, такой подход небезопасен. На некоторых компьютерах он может вызвать аномалии в поведении программ. Завершение при блокировке Функция Entrance::run() в предыдущем примере включает вызов sleep() в основном цикле. Мы знаем, что функция sleep() со временем даст программе продолжить работу, и задача достигнет начала цикла, где она сможет закончить проверять 1 Это упрощенная формулировка. Иногда даже внешне безопасные атомарные операции оказываются небезопасными, поэтому вы должны очень хорошо подумать, принимая решение об отказе от синхронизации. Отказ от синхронизации часто является признаком поспешной оптимизации — того, что причиняет массу хлопот без сколько-нибудь заметного выигрыша (а то и вовсе без выигрыша). 2 Атомарность операций — не единственный фактор. В многопроцессорных системах видимость играет гораздо более важную роль, чем в однопроцессорных. Изменения, внесенные одним потоком, даже атомар
Комментарии закрыты.
Последние комментарии