|
1 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 37
|
|
Можно ли и как запустить в программе, написанной на Delphi 7, 12 разных циклов одновременно?03.08.2017, 13:10. Показов 3025. Ответов 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 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
||
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
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С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|