Форум программистов, компьютерный форум CyberForum.ru

Синхронизация доступа - C++

Восстановить пароль Регистрация
 
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
30.08.2011, 10:16     Синхронизация доступа #1
Собственно есть массив структур. У данной структуры есть переменная, которая хранит состояние данной структуры(готова,не готова). В процессе работы приложение (многопоточное) циклично проверяет этот массив структур на готовность тех или иных структур, обращаясь к этой переменной каждой структуры, при этом такой опрос происходит в различных потоках программы. Значение переменной при опросе не меняется. Просто сравнивается с неким значением. И собственно вопрос. Не возникнет ли проблем, если я ни как не буду синхронизировать доступ к данным переменным?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
30.08.2011, 10:31     Синхронизация доступа #2
Aneron, полагаю, возникнет. При опросе-то значение переменной не меняется, а вот один поток может (может?) изменить готовность в момент опроса другим потоком.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
30.08.2011, 10:40  [ТС]     Синхронизация доступа #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Aneron, полагаю, возникнет. При опросе-то значение переменной не меняется, а вот один поток может (может?) изменить готовность в момент опроса другим потоком.
А процессе изменения готовности я хочу обернуть в функцию InterlockedIncrement/InterlockedDecrement.
За счет этого потоки всегда будут получать корректное значение переменной готовности.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.08.2011, 11:28     Синхронизация доступа #4
Цитата Сообщение от Aneron Посмотреть сообщение
А процессе изменения готовности я хочу обернуть в функцию InterlockedIncrement/InterlockedDecrement.
Ну а в чем тогда собственно вопрос?
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
30.08.2011, 12:07     Синхронизация доступа #5
Если только читаешь массив какие тут могут возникнуть проблемы, конечно если тебе нужен последовательные операции, например: один поток проверил значение запустил какую нибудь операцию, а другому потоку нужно уже после того как предыдущий закончит работу далее запускать что-то другое вот зесь нужно применять синхронизацию для этого лучше использовать mutex, event удобнее как только операция завершена можно посигналить следующему потоку что массив свободен уже для проверок~ops, а если не нужна последовательность операций и ничего не пишешь в массив вообще зачем зря в режим ожидания кидать потоки пускай "шалят".
Цитата Сообщение от Aneron Посмотреть сообщение
InterlockedIncrement/InterlockedDecrement
Можно и таким способом типа семафора-Дейкстры.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.08.2011, 12:11     Синхронизация доступа #6
Цитата Сообщение от Aneron Посмотреть сообщение
Значение переменной при опросе не меняется.
раз не меняется, то на чтение. А тут пожалуйста - ничего не надо синхронизировать
Yandex
Объявления
30.08.2011, 12:11     Синхронизация доступа
Ответ Создать тему
Опции темы

Текущее время: 23:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru