|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
|||||||||||
Delphi 6-7 Выполнение задачи в нескольких потоках, основные принципы, синхронизация09.02.2022, 18:58. Показов 1801. Ответов 33
Тему создал чтобы не флудить в соседней.
Собственно тестовый проект. Пока интересует вопрос связанный конкретно с вызовом этого кода из потока :
0
|
|||||||||||
| 09.02.2022, 18:58 | |
|
Ответы с готовыми решениями:
33
Чтение и выполнение задачи в разных потоках основные комбинатроные принципы Основные принципы среды С |
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|
| 09.02.2022, 19:04 | |
|
1
|
|
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||
| 09.02.2022, 19:29 [ТС] | ||
|
Constcat,
Вот, спасибо, я с самого начала хотел избавиться от этого способа логгирования. Ну он по крайней мере только из одного потока выполняется,и только он пишет в это Memo. Добавлено через 19 минут И через PostMessage отправлять адрес этой строки в основной поток. Там процедура вынет строку и поместит в memo . как вам такой вариант?
0
|
||
|
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,328
|
|
| 09.02.2022, 19:54 | |
|
0
|
|
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||
| 09.02.2022, 20:16 [ТС] | ||
|
Ну это все лишь лог для визуальной оценки работы. даже если ничего не придёт не критично.
0
|
||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 09.02.2022, 20:17 | ||
|
0
|
||
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
|
| 09.02.2022, 20:51 [ТС] | |
|
0
|
|
|
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,328
|
|
| 09.02.2022, 21:00 | |
|
Можно использовать массив char неизменяемого размера, а извлекать, как PChar строку. Тогда, даже если поток начнёт писать следующее сообщение, то считывающий поток хоть и прочитает наложенные строки, но не вылетит с исключением и штатно остановится на нуле. Ну это вариант, если корректность строк не важна.
Другой вариант, для каждой строки в потоке выделять память и в сообщении отправлять адрес, а в считывающем потоке считывать и освобождать память. Но тут опять надо быть уверенным, что генерация не обгонит считывание.
1
|
|
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 09.02.2022, 21:35 | ||
|
Для очереди подходит, а вот для одной переменной я бы синхронизацию использовал. Тем более, что там потери в производительности практически никакие.
0
|
||
|
Житель Земли
|
|||
| 10.02.2022, 10:19 | |||
|
0
|
|||
|
|
|||||||||||
| 10.02.2022, 10:59 | |||||||||||
|
если лог не сильно флудит, то можно использовать вот такую конструкцию
Log : TLogger; в каждый поток, чтобы не нарушать принцип инкапсуляции, передавать ссылку на него и тогда в любом месте, потокобезопасно
1
|
|||||||||||
|
Житель Земли
|
|||||||||||
| 10.02.2022, 12:13 | |||||||||||
|
krapotkin, я тут понемногу изучаю интерфейсы (раньше обходил стороной), в связи с этим хочется всё заинтерфейсить (шютка
). В общем, сваял тут на основе твоей идеи логгер. Работает, а нюанс в том, что в моей ХЕ7 нет ForceQueue, поэтому использовал просто Queue. Это потокобезопасно? Я не вникал в отличия между этими методами.поток, логгер
прога
0
|
|||||||||||
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 10.02.2022, 12:20 | |
|
0
|
|
|
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,328
|
|
| 10.02.2022, 12:24 | |
|
0
|
|
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
||||||
| 10.02.2022, 12:28 | ||||||
|
Тфу ты плин, переклинило. Смотрю в книгу - вижу фигу. Я вместо цикла вижу:
0
|
||||||
|
|
||||||
| 10.02.2022, 12:55 | ||||||
|
разница между Queue и ForceQueue только в том, что когда Queue вызывается из главного потока, ни в какую очередь ничего не встает, и выполняется сразу.
ForceQueue пофиг, какой поток, все - в очередь. p.s. использовать тип byte в современных программах бессмысленно все равно загружается весь регистр процессора. а там 64 бита, между прочим. и для работы именно с байтом, надо еще и сделать маску/сбросить остальные биты. так что лучше 1) не выпендриваться 2) for i := 1 to 10 do )))) Добавлено через 5 минут еще вопрос про интерфейсы этот класс создается один раз в начале работы программы и удаляется в конце зачем вся эта возня со сложными объявлениями и зачем эти afterConstruction / beforeDestruction? мне кажется классика тут гораздо чище выглядит:
0
|
||||||
|
Житель Земли
|
|||
| 10.02.2022, 13:17 | |||
|
0
|
|||
|
Житель Земли
|
|||
| 10.02.2022, 14:17 | |||
|
в целом, по данному вопросу спорить не буду, ибо не компетентен. я провёл эксперимент: - как это коррелирует с вышесказанным?
0
|
|||
| 10.02.2022, 14:17 | |
|
Помогаю со студенческими работами здесь
20
Основные принципы Squid! Основные принципы WCF Основные принципы создания грида Задание основные принципы ООП Основные принципы создания плагинов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|