delphi многопоточность



Автор Sashas задал вопрос в разделе Другие языки и технологии

Многопоточность в DELPHI и получил лучший ответ

Ответ от Владимир Волков[гуру]
многопоточность - один печатает, другой вывод на экран, третий считает сего-нибудь... Если надо реализовать просто для контрольной, то откроем три окна, организуем, например, вывод координат курсора, и для каждого окна они будут разные... (так вроде)
sashas
Профи
(968)
А как под таймером? есть skype? sashas_gomel добавляйтесь поговорим

Ответ от Илья Павлов[гуру]
Многопоточность работает так: в операционной системе есть понятие поток - программа или ее часть, для исполнения которой выделяется своя порция процессорного времени. Поскольку процессор работает достаточно быстро, можно сказать, что все потоки выполняются одновременно. Стандартное приложение на Делфи однопоточное, то есть, для исполнения его кода процессор выделяет только одну порцию времени, остальное время идет на другие программы, запущенные в ОС. Многопоточность в одном приложении может понадобиться, когда некоторая его часть требует для одной операции длительное время. Как пример, копирование файла. Пусть ваша программа копирует файл в одном потоке. В этом потоке работает ее графический интерфейс (она получает и реагирует на сообщения ОС) , создаются и удаляются объекты, и т. д. Но вы запускаете копирование файла в вашей программе. В этом случае ее поток исполняет некоторую процедуру в течение 2 - 3 минут (как правило, копирование ведется в цикле) . Пока выполняется эта процедура, ваша программа как бы зависает. Она не реагирует на действия мыши, не перерисовывается и т. д. Это продолжается до тех пор, пока программа не выйдет из процедуры копирования. В случае, если для копирования выделяется отдельный поток, то программа уже получит не одну, а две порции времени процессора: на основной поток и на поток копирования. Основной поток продолжит обслуживать графический интерфейс, реагировать на события, а другой поток будет занят исключительно копированием файла.. .
В параметрах создания объекта потока указывается, в числе прочего, адрес процедуры, которая будет выполняться в созданном потоке. После запуска потока эта процедура выполнится (всего один раз, от начала и до конца) , после чего поток будет остановлен. Обычно в поток помещается некоторый цикл, который должен выполняться длительное время (копирование файла, например) . Этот цикл как раз и вписывается в поточную процедуру. Если необходимо, чтобы в потоке выполнялось некоторое действие не с начала, имеет смысл задуматься о сохранении состояния действия и его возобновлении в потоке (добавив глобальные переменные состояния, например) .
Если больше одного потока одновременно обращаются к одному ресурсу, имеет смысл изучить объекты управления потоками (мьютексы, семафоры, секции критического кода) .
З. Ы. : ну и первый закон программиста: не обращайся к объекту из потока, его не создавшего.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Многопоточность в DELPHI
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*