![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
3 потока и одна переменная
maksim © (2011-05-15 11:44:00)есть 3 потока и 1 общая переменная
один поток может изменять значение этой переменной, а 2 других потока не могут менять ее значение, только читают.
Вопрос: нужна ли тут критическая секция?
sniknik (2011-05-15 15:00:00) [1]> какое значение N они получат
либо старое, либо новое,
смена значения у интеждера же атомарная, т.е. он его не побайтно меняет, с возможностью прервать операцию на обработку потоком. нет?
> А если читающий поток всегда должен получать строго новое значение N
ну, в этом случае, если строго новое, я бы тоже без синхронизации обошелся... просто бы посылал потоку новое значение при его смене.
maksim (2011-05-15 14:59:00) [2]ага, вроде понятно, спасибо за ответы
Юрий Зотов (2011-05-15 13:38:00) [3]
> maksim (15.05.11 12:06) [2]
Зависит от задачи. Если читающим потокам все равно, какое значение N они получат, то синхронизация не нужна. А если читающий поток всегда должен получать строго новое значение N (то есть, строго ПОСЛЕ того, как его установит пишущий поток), то синхронизация нужна.
maksim (2011-05-15 12:06:00) [4]тип интеже, назовем N
вот в одном потоке допустим при каком-то условии увеличиваем N в 2 раза
в двух других потоках используем эту переменную как входную для какой-то функции f(N), то есть этими двумя потоками переменная N не может меняться
sniknik (2011-05-15 11:53:00) [5]зависит от типа переменной. или от правил (ну вот взять себе за правило, что она всегда нужна при обращении из разных потоков...)