169 похожих чатов

Привет всем. Народ, кто-нибудь работал с мультипоточностью? Где посмотреть/

что почитать посоветуете? В идеале чтоб материал был максимально сжатый, времени читать например всю книгу от ОмниМультитредингЛибрари у меня не будет..

А если есть какой-нибудь пример с мультипоточностью, то будет вообще класс.

18 ответов

6 просмотров

мультипоточность в делфи?

Serg-Vish Автор вопроса
Delphi Coder
мультипоточность в делфи?

то есть это не несколько работающих классов thread (ну крутится там цикл вечный или до сигнала , лишь бы паузу соблюдали) , обменивающиеся мухами или время от времени синхронизирующийся с основным потоком?

Serg Vish
да

ищи описание и как работает TParallel.for

Serg-Vish Автор вопроса
IliaIT
то есть это не несколько работающих классов thread...

вечный цикл там не нужен. Просто надо реализовать неблокирующий функционал - например на кнопку нажали, в её обработчике начать в отдельном потоке выполнять долгую логику. При этом другие кнопки должны быть кликабельными. По завершению тот сынициализированный поток просто хотя бы алярм виндоу какое-нибудь выкидывает и все на этом.

Serg Vish
вечный цикл там не нужен. Просто надо реализовать...

типовое описание потока, тут даже внешнее взаимодействие не надо. а лишь в конце синхронизировать.

Скока ошибок в терминах. У соседей расстреляли бы.

Что то почитать все равно придется. Или хелп, с демками. Или книгу. См Логинов - многопоточность в Delphi. MultiThreading - the Delphi Way.

Serg Vish
вечный цикл там не нужен. Просто надо реализовать...

Это очень простой случай. Достаточно форме postMessage посылать.

Alexey Gavrilov
Скока ошибок в терминах. У соседей расстреляли бы.

тут думал направление когда много потоков запустилось по внешнему событию , а потом ещё и данными меняются между собой, не беся пользователя (например хеши считают, с разных мест алгоритма и скидывают обработку, по идее дельфя и ос сама должна нагрузить разные ядра процессора). а потом пояснили что это один поток на одно событее пользователя и просто результат в конце выдать(синхрон с основным)

Serg Vish
вечный цикл там не нужен. Просто надо реализовать...

Задал в чат GPT вопрос: покажи пример кода на Delphi RAD 11 с использованием TTask Пример использования класса TTask в Delphi RAD Studio 11 для асинхронного выполнения задачи может быть следующим. В данном примере создается простая задача, которая выполняется в отдельном потоке и обновляет элемент управления TLabel в основном потоке после выполнения. uses System.Classes, System.SysUtils, System.Threading, Vcl.Forms, Vcl.Controls, Vcl.StdCtrls; procedure TForm1.StartTask; begin // Запуск асинхронной задачи с помощью TTask TTask.Run( procedure var Result: Integer; begin // Симуляция длительной операции Result := 0; for var i := 1 to 10 do begin Sleep(500); // Пауза 500 мс Result := Result + i; end; // Обновление UI в основном потоке TThread.Synchronize(nil, procedure begin Label1.Caption := 'Результат: ' + Result.ToString; end); end); end; ### Объяснение: 1. Создание задачи: TTask.Run запускает анонимную процедуру в отдельном потоке. 2. Выполнение вычислений: Внутри задачи выполняются операции, например, подсчет суммы чисел с задержкой. 3. Обновление UI: Так как UI-элементы нельзя обновлять из неосновного потока, используется TThread.Synchronize, чтобы безопасно изменить текст в Label1 из основного потока. ### Важно: При работе с элементами UI необходимо синхронизировать поток с основным потоком приложения, чтобы избежать ошибок доступа к элементам интерфейса.

Serg Vish
вечный цикл там не нужен. Просто надо реализовать...

Если данные, которые поток обрабатывает - доступны в это время эксклюзивно только ему, и больше никто другой не лезет в них - то с виду простая задача, можно в принципе даже не читая, а просто подкорректировав чужой пример

Serg-Vish Автор вопроса
notme
Если данные, которые поток обрабатывает - доступны...

да там скорее всего и не будет конкурентного доступа. Я доступ просто напросто закрою для других кнопок (тупо буду проверять енаблед кнопки основной). Пусть читают хелп пока обработка идет.

Delphi Coder
Задал в чат GPT вопрос: покажи пример кода на Delp...

Еще нужно иметь ввиду, что в анаонимные методы замедляют работу если поток должен работать работать в васокпроизводительном режиме например, сортировка огромных списков, по крайней мере так пишет Марко Канту

Serg Vish
вечный цикл там не нужен. Просто надо реализовать...

Создаешь экземпляр TThread. Внутри Execute прописываешь свою логику. В конце логики пишешь Syncronize и выводишь алярм. Статей полно. Даже в книге Флёнова такое было.

Похожие вопросы

Обсуждают сегодня

Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Всем привет! Скажите, никто не пытался уменьшить размер процесса ssl, которые ассоциируется с открытым соединением (не помню точное название этого процесса, но там была какая-...
Алексей
20
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
а проверьте, собирается ли у кого сейчас транк лазаря через делюкс? у меня вот: fpcupdeluxe: info: Lazarus Native Installer (BuildModuleCustom: UserIDE): LazBuild: building Us...
Iluha Companets
20
добрый день. возможно ли изменить цвет окон лазаруса? Как?
Budemposmotret
35
Мне тут приспичило встроить в программу форматировние текста SQL, расставить переносы строк и отступы так, чтобы лучше читалось. Я что-то свое изобразил, оно после ключевых сл...
Sergey Bodrov
11
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Господа, а кто-нибудь сталкивался с размещением на TTabControl/TTabSheet множества контролов (> 100) с последующими External: Access violation? Вот буквально на ровном месте. ...
Dmitry
29
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
36
Does anyone have some zeroday's left?
Wito!d ♥️🩷
44
Карта сайта