|
1 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 37
|
|
Можно ли и как запустить в программе, написанной на Delphi 7, 12 разных циклов одновременно?03.08.2017, 13:10. Показов 3079. Ответов 57
Метки нет (Все метки)
Здравствуйте! Профи подскажите, можно ли и как запустить в программе написанной на Delphi 7 12 разных циклов одновременно, и чтобы получать из них результаты и собрать эти результаты в один?
0
|
|
| 03.08.2017, 13:10 | |
|
Ответы с готовыми решениями:
57
Как запустить метод класса одновременно в разных потоках?
Можно ли создать тест в программе My Test Student и запустить этот тест через Delphi? |
|
Айлурофил
|
|
| 06.08.2017, 12:52 | |
|
0
|
|
|
|
||
| 06.08.2017, 13:46 | ||
|
поэтому успокойтесь. не нужно бесконечных циклов. отпустите программу обрабатывать вашу мыш и кноподоску. когда поток завершился, он придет в OnTerm. Там и проверяйте. Если количество завершенных=кол-ву запущенных, выводите сумму на экран
0
|
||
|
Айлурофил
|
|||
| 06.08.2017, 13:56 | |||
|
Если логика программы подразумевает: 1. Запустить потоки. 2. Дождаться окончания их работы. 3. Получить результат работы. 4. Делать что-то с этим результатом дальше. 4а. На экране мне никаких сумм не нужно. То как должен выглядеть код? Добавлено через 5 минут
0
|
|||
|
Айлурофил
|
|
| 06.08.2017, 13:59 | |
|
Лукавите. В коде это как будет выглядеть? На примере моего кода можете показать?
0
|
|
|
|
||||||
| 06.08.2017, 15:19 | ||||||
|
как-то подзадолбало уже.
я в первом же ответе дал ссылку на пример, который показывает, как разделить работу по потокам, при этом контролируя кол-во одновременно запущенных вот вам второй раз запустить 1000 потоков 10 одновременно при завершении каждого проверять а) нужны ли еще потоки б) все ли потоки завершились Кликните здесь для просмотра всего текста
0
|
||||||
|
Айлурофил
|
|
| 06.08.2017, 21:54 | |
|
(Со вздохом) Хорошо, если после получения итога, как в Вашем примере, этот итог не нужно выводить на экран, а нужно провести с ним сложные вычисления, возможно, с новыми созданиями потоков (как это будет в реале, а не в учебном коде, например при анализе позиций шахматной партии), Вы это тоже продолжите делать в процедуре ThreadTerminated?
0
|
|
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
||
| 07.08.2017, 02:04 | ||
|
А что такое "общее значение среди них"? Теперь спрашиваю а что значит "Если не объединять их"?
0
|
||
|
|
||||
| 07.08.2017, 07:30 | ||||
|
результат все равно будет готов только когда закончится последний поток раньше этого момента ваша программа может только а) "зависнуть", не реагируя на внешние раздражители б) работать как обычно с мышью и клавиатурой (ну, если есть хоть одно ядро свободное от массы потоков) когда вы загружаете страницу в браузере, он производит скачивание 10-20 файлов, и до черта всяких "сложных вычислений" и при этом вы все еще можете просто прибить страницу и не ждать, при этом все остальные как работали так и работают! хотя они тоже могли сделать цикл "пока все не загрузится, пусть пользователь пойдет почитает книгу"
0
|
||||
|
Айлурофил
|
|
| 07.08.2017, 08:51 | |
|
Понятно, каждый из нас рассуждает, имея в виду свои категории задач.
Я рассуждаю о потоках, имея в виду, в основном, категории вычислительных задач прямой логики, когда длинные вычисления разбиваются на потоки с целью уменьшения времени (типа расчета шахматных позиций, или математических вычислений), и в это время можно, конечно, пощёлкать мышкой или набрать что-то на клавиатуре, но - зачем? И в этом случае мой подход вполне работает. У Вас рассуждения о задачах параллельной логики, где будет работать именно Ваш подход. На этом и остановимся.
0
|
|
|
|
|
| 07.08.2017, 11:01 | |
|
если бы вам было все равно, висит программа или нет, вы не лепили бы Application.ProcessMessages, которая вам нужна именно для обновления UI и работы с вводом. а на деле имеет спецэффекты
главный цикл программы Application.Run как раз и представляет собой бесконечный цикл с обработкой Application.ProcessMessages. Не надо его дублировать, запуская второе кольцо в обработчике, из которого опять можно попасть в обработчик и т.д.
0
|
|
|
Житель Земли
|
|||||||
| 07.08.2017, 11:03 | |||||||
|
Кликните здесь для просмотра всего текста
0
|
|||||||
|
Айлурофил
|
||
| 07.08.2017, 11:30 | ||
|
krapotkin, я вовсе не настаиваю на том, что это должен быть цикл с ProcessMessages. Логичней, конечно, применить WaitForSingleObject, через семафоры.
Добавлено через 2 минуты
0
|
||
|
Айлурофил
|
|
| 07.08.2017, 11:41 | |
|
То место, где я запустил процессы. Я же написал, что речь идёт о задачах прямой логики, где последовательность действий жёсткая.
0
|
|
|
Житель Земли
|
|||
| 07.08.2017, 11:50 | |||
|
0
|
|||
|
Айлурофил
|
|
| 07.08.2017, 12:10 | |
|
Простой пример: запусти любую шахматную программу и проверь: какие действия ты можешь совершить, пока она думает?
Или напиши программу расчета n! для больших n, и определи: какие "другие действия" нужно выполнять пока она считает?
0
|
|
|
Житель Земли
|
|||
| 07.08.2017, 12:32 | |||
|
0
|
|||
| 07.08.2017, 12:32 | |
|
Можно ли модули, написанные на Python, использовать в программе, которая пишется на Delphi? И если можно, то как? Как можно создать последовательность разных кадров (изображений) в одном слое в программе KoolMoves Есть исходник DLL на Delphi как (и возможно ли) написать похожее на VB.NET и использовать в среде программы написанной на Delphi Как подключить графику к написанной программе? Как подключить код на С к программе написанной на VB Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|