|
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 326
|
||||||
[Delphi] Многопоточность29.08.2010, 11:10. Показов 26548. Ответов 67
Метки нет (Все метки)
Интерисует след. вопрос:
"Как сделать создание потоков? (кол-во зависит от того сколько укажет пользователь)" Хотелось бы увидеть "готовый код", лазя по гуглу оч много информации, но там слишком много лишнего текста читая который тупо мозг взрывается )) Добавлено через 4 минуты + как сделать синхронизацию (Первый пост редактировать не могу, проблемы в опере...) Добавлено через 19 часов 3 минуты Есть следующие строчки
0
|
||||||
| 29.08.2010, 11:10 | |
|
Ответы с готовыми решениями:
67
Многопоточность в Delphi
Что лучше брать Delphi XE2, Delphi XE, Delphi 7? |
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
|
| 16.09.2010, 20:12 | |
|
ну как бы это глупый код, хотя я особо и не понимаю чего ты этим хочешь добится, ибо свойство freeonterminate отвечает за то что после того как Execute потока отработала поток остался жив или же умер.... поэтому устанавливать это свойство нужно перед запуском потока... а не как то просто на клик на кнопке (это бессмыслено ибо нет привязки к запуску потока - т.е. точки относительно которой можно оценивать правильность кода)
1
|
|
|
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 326
|
|||||||
| 16.09.2010, 20:36 [ТС] | |||||||
|
Добавлено через 3 минуты
0
|
|||||||
|
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
|
|||||||||||||
| 16.09.2010, 20:55 | |||||||||||||
Добавлено через 1 минуту
0
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 18
|
|
| 13.12.2013, 10:15 | |
|
начинаю изучать многопоточность. в принципе в данном примере есть всё, что нужно (моя программа работает, ставит потоки на паузу, завершает потоки.
теперь как мне отследить количество активных потоков (при завершении), чтобы дождаться полного их завершению проделать кое какие операции с результатами? понимаю, что тема старая, но с нетерпением жду ответа Добавлено через 1 час 6 минут запускать цикл проверки каждого потока по значению Terminated ?
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
||||||
| 13.12.2013, 10:30 | ||||||
|
Можно сделать через семафоры:
0
|
||||||
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 18
|
|||||||||||
| 13.12.2013, 10:59 | |||||||||||
|
я может быть не совсем понятно выразился, а может не правильно прочитал ваш ответ.
по данному примеру. вот я завершаю потоки
просто после их остановки видно, как некоторые с запозданием завершаются (выводят результат работы) Добавлено через 2 минуты
0
|
|||||||||||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
||||||
| 13.12.2013, 11:06 | ||||||
|
aIThread[i].Terminate - это просто установка флага, который может быть использован для организации завершения работы потока, но к фактическому завершению он не имеет никакого отношения.
Добавлено через 3 минуты Вывод кол-ва существующих потоков:
1
|
||||||
|
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
||
| 13.12.2013, 11:26 | ||
|
Более удобно вместо счётчика завести список, например, типа TList. И в этом списке хранить ссылки на выполняющиеся потоки. Т. е., перед запуском очередного потока следует добавлять ссылку на него в список. А в обработчике события OnTerminate удалять ссылку на тот экземпляр TThread, который вызвал этот обработчик. И далее, если TList.Count = 0, то посылать форме соответствующее сообщение.
1
|
||
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 18
|
|
| 13.12.2013, 12:37 | |
|
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 13.12.2013, 14:08 | |
|
Нет, это подразумевает, что поток автоматически уничтожится после окончания своей работы.
0
|
|
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 18
|
|
| 13.12.2013, 14:57 | |
|
в процедуре TIThread.Execute ставить проверку на terminated и если да, то Free; ?
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 13.12.2013, 15:01 | |
|
Можно просто - Exit.
1
|
|
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 18
|
|
| 14.12.2013, 13:13 | |
|
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 14.12.2013, 13:19 | |
|
Когда процедура Execute завершится.
0
|
|
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 18
|
||
| 14.12.2013, 13:24 | ||
|
то он завершится автоматически после добавления строки? так получается? (при условии, что я вконце скомандовал Terminate)
0
|
||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 14.12.2013, 13:34 | |
|
Он завершится автоматически без всяких доп. команд.
0
|
|
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 18
|
||
| 14.12.2013, 13:59 | ||
|
0
|
||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 14.12.2013, 14:17 | |
|
К завершению процедуры Execute - циклов может быть несколько, а может вообще не быть.
1
|
|
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 18
|
||||||
| 15.12.2013, 10:57 | ||||||
|
спс понял, осталось еще про семафоры почитать
Добавлено через 18 часов 0 минут подскажите, я правильно пользуюсь семафором?
после чтения и удаления строки (первый этам семафора) начинается полезные действия, для записи результата опять жду семафора.
0
|
||||||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 15.12.2013, 12:14 | |
|
В данном случае надо использовать метод Synchronize, а не семафоры.
И подсчет кол-ва потоков так правильно работать не будет.
0
|
|
| 15.12.2013, 12:14 | |
|
Многопоточность Многопоточность Многопоточность Многопоточность многопоточность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|