|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.03.2012, 19:09 | #1 |
Форумчанин
Регистрация: 21.07.2007
Сообщений: 103
|
Как нескольким потокам брать строку из одного списка по очереди?
Привет.
Не нашел решения. Нужно, что бы каждый из потоков брал строку из списка, но такую, которую другие потоки еще не брали, например, первый поток взял 1-ю строку, второй - 2-ю, третий - 3-ю, n-ый n-ю... В обработчике нажатия вот что: Код:
Код:
Ну не грузить же список в Мемо и не передавать же через synchronize? Выручайте, господа! |
07.03.2012, 19:14 | #2 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
синхронизация между потоками, через критическую секцию.
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
07.03.2012, 19:18 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Мемо то зачем? Можно и в StringList держать. Но синхронизировать получение строки все равно прийдется. Нет желания synchronize использовать? Как вариант используйте критическую секцию для синхронизации
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
07.03.2012, 19:33 | #4 |
Форумчанин
Регистрация: 21.07.2007
Сообщений: 103
|
По критической секции понял, спасибо!
А если у меня (условно) 200 МЛН страниц - StringList и, тем более, Memo не загрузишь ? Выход только БД? |
07.03.2012, 19:34 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Если число поок даст юзер:
Число строк делим на число потоков, остаток забрасываем последнему потоку. Если надо динамически: или число потоков задаем по словию, чтобы ихбыло не больше 57, но и строк на каждый поток не приходилось более N, и таким вот образом считаем. |
07.03.2012, 19:37 | #6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
07.03.2012, 19:38 | #7 |
Форумчанин
Регистрация: 21.07.2007
Сообщений: 103
|
А что если не грузить в память весь список, а в критической секции инкрементировать счетчик и брать нужную строку из файла. Тогда получается в каждом потоке при каждом проходе будет обращение к файлу - это же не есть гуд?
Хоть и не силен, но соглашусь Последний раз редактировалось Stilet; 11.03.2012 в 15:00. |
07.03.2012, 19:40 | #8 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
вошел в секцию прочел строку вышел из секции. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
07.03.2012, 19:44 | #9 |
Форумчанин
Регистрация: 21.07.2007
Сообщений: 103
|
|
07.03.2012, 19:55 | #10 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а не нужно файл все время открывать, первый поток открыл, последний закрыл.
в итоге позиция файлового указателя сохраняется. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многократный запуск одного макроса для обработки информации по нескольким заказам поочередно | Ribun | Microsoft Office Access | 1 | 30.06.2011 09:36 |
Копировать строку фильтрованного списка в другую книгу, на последнюю пустую строку | Gvaridos | Microsoft Office Excel | 11 | 24.11.2010 00:48 |
Как скопировать строку из одного Stringgrida в другой? | Pinkygirl | Общие вопросы Delphi | 1 | 16.01.2010 23:25 |
Списка. Стеки, очереди, Кольца c++ | megavolt91 | Помощь студентам | 0 | 01.06.2009 20:23 |
как раскидать сгруппированные данные из одного стобца по нескольким | hudoi | Microsoft Office Excel | 2 | 07.02.2007 23:42 |