![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 17.11.2008
Сообщений: 116
|
![]()
я к тому, что может правильнее обойтись без чтения из глобальной переменной, а перед созданием потоков разбить массив на количество потоков и передать каждому создаваемому свой массив (таким образом каждый будет работать со своим массивом в рамках потока), тогда не понадобиться использовать критические секции и InterlockedIncrement()
|
![]() |
![]() |
![]() |
#12 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
![]()
1)Поток должен что-то возвращать?
2)КАК Вы собираетесь в поток массив скармливать? Тип массива должен быть объявлен как класс и экземпляры егодолжны быть объявлены глобально, чтоб можно было передать его потоку...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} |
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> с точки зрения организации кода, обращение из потока к данным извне (в данном случае к глобальной переменной) будет корректно, не будет противоречить логике многопоточности?
обычно потоки стараются изолировать по данным, чтобы каждый мог спокойно заниматься своим делом. Если этого не получается, то приходится брать в руки костыли в виде InterlockedXXX, критических секций и прочих синхронизационных штук. > Может разделить массив на количество потоков и каждому в конструктор скормить свой массив? да, можно просто передавать каждому потоку начальный и конечный индексы из массива для работы. Единственная проблема в том, что часть потоков может выполнить свою работу раньше остальных, и будут простаивать.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#14 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]()
Нахрен тут крит.секции - совершенно не понятно.
Массив УЖЕ сформирован (обратного утверждения не последовало), никто изменять его не собирается. Осн.поток (или любой иной поток-"диспетчер") берт любой доп.поток из пула свободных или создает новый доп.поток и передает ему параметром очередной элемент массива (по ссылке или по значению передает - по барабану, ибо доп.потгок переданный ему эл-т массива изменять НЕ собирается). |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при работе с потоком | Claster | Помощь студентам | 1 | 14.10.2009 16:06 |
Многопоточность при отправке почты | sanchopansa | Работа с сетью в Delphi | 4 | 04.10.2008 14:57 |
Проблема при работе с БД | HAMMAN | БД в Delphi | 3 | 29.03.2008 14:42 |
Ошибка при работе с БД | malevich | БД в Delphi | 8 | 25.11.2007 15:10 |