|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.05.2013, 20:58 | #1 |
Форумчанин
Регистрация: 31.12.2006
Сообщений: 114
|
Здравствуйте, пытаюсь разобраться в многопоточности, есть задача: На форме лист бокс по нажатию на кнопку, лист бокс начинает заполняться по порядку от 1 до 1000000, как осуществить заполнение в несколько потоков, без повторения цифр...
Суть я понимаю, только при повторном нажатии по кнопке, цикл начинает выполняться заного, тем самым повторяются цифры, прошу даже не код, а совет как это можно осуществить... Последний раз редактировалось Stilet; 21.05.2013 в 21:29. |
21.05.2013, 21:32 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Установи свойство для каждого потока: Число, с которого поток начинает свой отсчет. В цикле к этому числу прибавляется 1, потом в синхронизированной процедуре-методе потока (если имеется ввиду TThread) выводится в ЛистоБокс.
Таким образом скажем будет 10 потоков. Первый поток будет стартовать с 1, второй с 1000000 div 10, третий с 1000000 div 100, и т.д. Тогда исключатся повторы.
I'm learning to live...
|
21.05.2013, 21:50 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
niva622, очень сомневаюсь, что в 10 потоков будет сильно быстрей ListBox заполняться, чем просто в основном потоке. Если вообще быстрей будет. Не забывай синхронизировать вывод в ListBox
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
22.05.2013, 03:39 | #4 |
Пользователь
Регистрация: 07.05.2013
Сообщений: 51
|
вроде любой вывод в listbox из потока и так синхронизирован, если не изменяет память... проверять сразу говорю не хочу)
Последний раз редактировалось iworm2009; 22.05.2013 в 03:47. |
22.05.2013, 04:29 | #5 |
Форумчанин
Регистрация: 30.10.2010
Сообщений: 524
|
|
22.05.2013, 05:24 | #6 |
Пользователь
Регистрация: 07.05.2013
Сообщений: 51
|
да закусывать надо
Последний раз редактировалось iworm2009; 22.05.2013 в 05:32. |
22.05.2013, 08:17 | #7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Беды конечно не должно быть, но минимум получишь цифры в разброс без синхронизации. Цитата:
I'm learning to live...
|
||
22.05.2013, 10:08 | #8 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
простейшая многопоточность без заморочек это таймер, следовательно 3 таймера это 3 потока (где то читал что старить таймер менее чем на 24 мс нет смысла из за особенностей дельфи 7, может потом подправили), и сделать одну глобальную переменную тогда будут веселее цифры идти. запускать все таймеры нужно при нажатии одной кнопки. так же для ускорения можно сделать мелкие циклы в таймерах.
например проверить можно таймеры так первый таймер прибавляет 1 к глобальной переменной второй 100, третий 1000. и всё это в соответствующих событиях таймеров. с единственным условием что глобальная переменная должна быть менее чем предел. код наверное не надо писать мне и так там 1-2 строчки.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
22.05.2013, 11:36 | #9 |
Форумчанин
Регистрация: 31.12.2006
Сообщений: 114
|
неее, дело в том что задача не учебная) просто самостоятельно начал изучать потоки, где то читал что синхронизацию необходимо использовать только для вывода информации...
Зы.. Таймером можно, но задача стоит не та, пока вижу вариант синхронизировать несколько потоков, только задача.. А если потоков нужно 20-50 все через синхронизацию ?! |
22.05.2013, 11:49 | #10 | ||
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
Цитата:
Цитата:
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
многопоточность | blacktener | Общие вопросы по Java, Java SE, Kotlin | 1 | 25.07.2012 13:18 |
Многопоточность | t2skler | Общие вопросы C/C++ | 4 | 16.04.2012 14:24 |
Многопоточность | WennY | Общие вопросы Delphi | 11 | 23.04.2011 00:46 |
многопоточность | DeDoK | Общие вопросы Delphi | 6 | 01.08.2010 02:14 |