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

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

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

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

18 ответов

18 просмотров

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

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 и выводишь алярм. Статей полно. Даже в книге Флёнова такое было.

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта