![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток!
Возник вопрос следующего плана. Есть сложная структура даных: к примеру Код:
t1=record val1:bool; val2:bool; val3:bool; end; t2=record ar1:array of t1; ar2:array of t1; ar3:array of t1; end; t3=record arr1:array of t2; arr2:array of t2; arr3:array of t2; end; С главного потока части структуры передаются указателем в дочерние потоки которые выполняются параллельно. В дочерних потоках производится только чтение данных из тех структур что им передались, запись НЕ производится. Вопрос: Нужно ли места чтения ограничивать "критическими секциями"? Не будет ли ошибок при одновременном чтении? |
#2
|
||||
|
||||
![]() Теоретически нет, булева переменная она потоконезависима, а при чтении/записи в массив ты работаешь с булевыми переменныим.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
||||
|
||||
![]() если еще и главный поток при этом не будет изменять то все будет нормально.
Пишу программы за еду. __________________ |
#4
|
|||
|
|||
![]() Булевая переменная с потолка, структура там по больше и типов много.
Основной поток генерирует всю структура(размерности масивов). Отдельный поток изменяет значения, при этом блокирую структуру через Мьютексы, а куча мелких потоков если структура не заблокирована создаются, читают даные и завершаются. Если структура заблокирована потоком записи то потоки чтения ждут пока мьютекс освободится. Так работать будет? |
#5
|
||||
|
||||
![]() Да, должно работать.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
relline (31.07.2013)
|
#6
|
|||
|
|||
![]() спасибо за помощь
|