![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||||
|
||||||
![]() Всем привет) Такая проблема возникла.
Есть программа, в ней используются потоки. Причем количество потоков задается числом в edit. Далее, в МЕМО вводятся фамилии, по одной на каждую строчку. И мне нужно в несколько потоков провести одинаковые действия со списком. Естественно встала проблема синхронизации(или как бы это назвать) . Т.е. нужно чтобы одновременно в каждом потоке был обработан свой элемент(не повторяясь). Код прилагаю.(В этом коде все потоки идентичны и выполняют одинаковую работу несколько раз ![]() класс потока: Код:
Создаем и запускаем их: Код:
Сам поток выглядит так: Код:
Чую, как то можно сделать, но до меня не допрет никак ![]() прошу здесь помощи) ЗЫ мб делить список на куски и раздавать каждому потоку свой кусок? ![]() |
#2
|
|||
|
|||
![]() Делается одрним из 2х способов.
1. Делается поток-диспетчер, который распределяет данные между остальными потоками. Плохо то, что данные будут все-таки целиком обработаны, хотя бы начально, этим самым потоком. 2. Делается очередь. Каждый поток извлекает из нее задание себе сам. При этом извлечение заданий "обернуто" в критическую секцию (CriticalSection). |
#3
|
||||
|
||||
![]() Цитата:
Вот этим способом можно пробовать. Можешь пример показать, пожалуйста? |
#4
|
||||
|
||||
![]() Почитал литературу по потокам, нашел решение. Сделал через очередь, а само извлечение из очереди в CriticalSection . Спасибо lmikle
|