|
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
|
||||||||||||||||
Как запустить несколько потоков одновременно?21.12.2020, 21:27. Показов 6360. Ответов 43
Метки нет (Все метки)
Ребята, здравствуйте.
Помогите с потоками. Я ранее использовал их лишь раз, чтобы сделать фоновую анимацию во время долгого процесса. Там не было ничего сложного. Сейчас я хочу ускорить работу программы. Мне одной процедурой нужно обработать множество файлов. Файлы однотипны и пронумерованы. Т. е. 1.xml, 2.xml и т.д. Файлов может быть много, до 5000. Так вот, я хочу запустить потоков 10. Что сейчас. Так объявлен класс потока
Пробовал убирать синхронизацию, программа просто зависает. ничего не происходит.
0
|
||||||||||||||||
| 21.12.2020, 21:27 | |
|
Ответы с готовыми решениями:
43
Как запустить несколько потоков с общим List?
|
|
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
|
|
| 24.12.2020, 11:45 [ТС] | |
|
0
|
|
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
||||||
| 24.12.2020, 12:10 | ||||||
|
Вы не поверите, но вот исходник StrToInt:
0
|
||||||
|
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
|
|
| 24.12.2020, 12:35 [ТС] | |
|
Тем не менее, с процедурой Val потоки работают!
0
|
|
|
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
|||
| 24.12.2020, 13:48 | |||
|
Там же точно должны региональные установки влиять! и DecimalSeparator StrToFloat
0
|
|||
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
|||
| 24.12.2020, 14:07 | |||
|
1
|
|||
|
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
|
| 24.12.2020, 14:09 | |
|
AzAtom, ну да, для преобразования записи целого числа ничего дополнительно не нужно, в отличие от преобразования вещественного.
0
|
|
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
|
| 24.12.2020, 14:30 | |
|
StrToFloat сделан на асме и реализация в XE3 мало чем отличается от реализации в D7.
0
|
|
|
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
||
| 24.12.2020, 15:20 | ||
|
0
|
||
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
|||||||
| 24.12.2020, 16:11 | |||||||
А в итоге вызывается одна и та же функция TextToFloat, которая собственно и выполняет преобразования и написана на асме. То есть, дело не в функции преобразования. Не по теме: В общем, в предыдущем сообщении я неправильно выразился, что может ввести в заблуждение.
1
|
|||||||
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
||||||
| 24.12.2020, 18:21 | ||||||
|
Во всех языках есть разделение кода командой Inline;
0
|
||||||
|
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
|
||||||
| 28.12.2020, 13:06 [ТС] | ||||||
|
Пробовал так. Не помогло. впрочем процедура Val данную проблему решила. Однако мои "мучения" еще не окончены.
Теперь мне нужно в потоках заполнить файлы Excel. Сейчас они просто подвисают. Код такой.
Пробовал создавать переменную Ex как глобальную и CreateOleObject делать до вызова потоков. тоже все висело. как правильно?
0
|
||||||
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
|
| 28.12.2020, 14:08 | |
|
0
|
|
|
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
|
|
| 28.12.2020, 15:15 [ТС] | |
|
Задержки sleep. У меня выводится контроль потоков. Я при копировании это удалил.
Добавлено через 43 минуты Уже при Ex[LastSym]:=CreateOleObject('Excel.Application'); потоки зависают.
0
|
|
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
|
| 28.12.2020, 16:06 | |
|
0
|
|
|
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
|
|||||||||||
| 28.12.2020, 16:27 [ТС] | |||||||||||
|
Поле потока
0
|
|||||||||||
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
|||||||
| 28.12.2020, 16:42 | |||||||
0
|
|||||||
|
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
|
|
| 28.12.2020, 19:50 [ТС] | |
|
Во-первых, разумеется, переделано, а во-вторых, это вообще другая процедура и другой класс потока.
По Excel кто-нибудь что-нибудь скажет?
0
|
|
|
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
|
|
| 28.12.2020, 20:02 | |
|
Думаю, потоки тут ничего не ускорят потому, что скорость будет упираться в скорость обработки excel. В общем, смысла нет в потоках.
0
|
|
|
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
||||||
| 29.12.2020, 02:09 | ||||||
|
Во первых, вам вообще нафик не нужен эксель для сохранения данных в табличном виде. Вполне достаточно сделать файл в формате .csv Эксель его чуть ли не родным считает и открывает без проблем.
Во вторых, для работы с Com-объектами из потока, нужно использовать пару функций CoInitialize и CoUnInitialize. Это тоже методы синхронизации, только с внешним миром. В третьих, эксель и ворд всегда создают только один экземпляр в системе, поэтому CreateOleObject должен быть использован только один раз, а потом уже надо проверять, есть ли активный эксель и подключаться к нему через GetActiveOleObject. Обычно подключение делается так:
1
|
||||||
| 29.12.2020, 02:09 | |
|
Помогаю со студенческими работами здесь
40
Выполнение одновременно несколько sql запросов одновременно Как запустить несколько потоков одновременно? Как запустить несколько потоков чтения/записи одновременно? Создать и запустить одновременно несколько потоков Как запустить несколько while одновременно? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|