Название: Чтение данных одного потока другим Отправлено: JamS007 от Декабрь 27, 2010, 19:44 Здравствуйте, коллеги. Возник следующий вопрос:
Предположим в одном потоке есть переменная типа unsigned int. Все операции с этой переменной происходят в этом же потоке. Следует также сказать, что ее значение меняется довольно часто. Другому потоку время от времени нужно узнать значение этой переменной, не изменяя ее при этом. Только считать. Есть ли опасность того, что операция чтения вернет неверный результат, так как совпадет с изменением самой переменной в памяти? P.S. Знаю о существовании QAtomicInt, но он мне не подходит, у меня - unsigned int. Название: Re: Чтение данных одного потока другим Отправлено: Igors от Декабрь 27, 2010, 19:55 Другому потоку время от времени нужно узнать значение этой переменной, не изменяя ее при этом. Только считать. Ну и читайте, т.к. чтение 32-битного значения атомарно (без разницы signed/unsigned). Другое дело что опираться на считанное значение Вы не очень можете (др. нитка может изменить его в любой момент). ПримерКод
Название: Re: Чтение данных одного потока другим Отправлено: JamS007 от Декабрь 27, 2010, 20:09 Цитировать Другое дело что опираться на считанное значение Вы не очень можете В моем случае это не так важно. Данная операция атомарна на любой платформе? Название: Re: Чтение данных одного потока другим Отправлено: Igors от Декабрь 27, 2010, 20:11 Цитировать Другое дело что опираться на считанное значение Вы не очень можете В моем случае это не так важно. Данная операция атомарна на любой платформе? Название: Re: Чтение данных одного потока другим Отправлено: Akon от Декабрь 27, 2010, 20:22 Обязательно объяви эту переменную с модификатором volatile, иначе при оптимизации может получиться некорректный код.
|