Автор Sashas задал вопрос в разделе Другие языки и технологии
Многопоточность в DELPHI и получил лучший ответ
Ответ от Владимир Волков[гуру]
многопоточность - один печатает, другой вывод на экран, третий считает сего-нибудь... Если надо реализовать просто для контрольной, то откроем три окна, организуем, например, вывод координат курсора, и для каждого окна они будут разные... (так вроде)
sashas
Профи
(968)
А как под таймером? есть skype? sashas_gomel добавляйтесь поговорим
Ответ от Илья Павлов[гуру]
Многопоточность работает так: в операционной системе есть понятие поток - программа или ее часть, для исполнения которой выделяется своя порция процессорного времени. Поскольку процессор работает достаточно быстро, можно сказать, что все потоки выполняются одновременно. Стандартное приложение на Делфи однопоточное, то есть, для исполнения его кода процессор выделяет только одну порцию времени, остальное время идет на другие программы, запущенные в ОС. Многопоточность в одном приложении может понадобиться, когда некоторая его часть требует для одной операции длительное время. Как пример, копирование файла. Пусть ваша программа копирует файл в одном потоке. В этом потоке работает ее графический интерфейс (она получает и реагирует на сообщения ОС) , создаются и удаляются объекты, и т. д. Но вы запускаете копирование файла в вашей программе. В этом случае ее поток исполняет некоторую процедуру в течение 2 - 3 минут (как правило, копирование ведется в цикле) . Пока выполняется эта процедура, ваша программа как бы зависает. Она не реагирует на действия мыши, не перерисовывается и т. д. Это продолжается до тех пор, пока программа не выйдет из процедуры копирования. В случае, если для копирования выделяется отдельный поток, то программа уже получит не одну, а две порции времени процессора: на основной поток и на поток копирования. Основной поток продолжит обслуживать графический интерфейс, реагировать на события, а другой поток будет занят исключительно копированием файла.. .
В параметрах создания объекта потока указывается, в числе прочего, адрес процедуры, которая будет выполняться в созданном потоке. После запуска потока эта процедура выполнится (всего один раз, от начала и до конца) , после чего поток будет остановлен. Обычно в поток помещается некоторый цикл, который должен выполняться длительное время (копирование файла, например) . Этот цикл как раз и вписывается в поточную процедуру. Если необходимо, чтобы в потоке выполнялось некоторое действие не с начала, имеет смысл задуматься о сохранении состояния действия и его возобновлении в потоке (добавив глобальные переменные состояния, например) .
Если больше одного потока одновременно обращаются к одному ресурсу, имеет смысл изучить объекты управления потоками (мьютексы, семафоры, секции критического кода) .
З. Ы. : ну и первый закон программиста: не обращайся к объекту из потока, его не создавшего.
Многопоточность работает так: в операционной системе есть понятие поток - программа или ее часть, для исполнения которой выделяется своя порция процессорного времени. Поскольку процессор работает достаточно быстро, можно сказать, что все потоки выполняются одновременно. Стандартное приложение на Делфи однопоточное, то есть, для исполнения его кода процессор выделяет только одну порцию времени, остальное время идет на другие программы, запущенные в ОС. Многопоточность в одном приложении может понадобиться, когда некоторая его часть требует для одной операции длительное время. Как пример, копирование файла. Пусть ваша программа копирует файл в одном потоке. В этом потоке работает ее графический интерфейс (она получает и реагирует на сообщения ОС) , создаются и удаляются объекты, и т. д. Но вы запускаете копирование файла в вашей программе. В этом случае ее поток исполняет некоторую процедуру в течение 2 - 3 минут (как правило, копирование ведется в цикле) . Пока выполняется эта процедура, ваша программа как бы зависает. Она не реагирует на действия мыши, не перерисовывается и т. д. Это продолжается до тех пор, пока программа не выйдет из процедуры копирования. В случае, если для копирования выделяется отдельный поток, то программа уже получит не одну, а две порции времени процессора: на основной поток и на поток копирования. Основной поток продолжит обслуживать графический интерфейс, реагировать на события, а другой поток будет занят исключительно копированием файла.. .
В параметрах создания объекта потока указывается, в числе прочего, адрес процедуры, которая будет выполняться в созданном потоке. После запуска потока эта процедура выполнится (всего один раз, от начала и до конца) , после чего поток будет остановлен. Обычно в поток помещается некоторый цикл, который должен выполняться длительное время (копирование файла, например) . Этот цикл как раз и вписывается в поточную процедуру. Если необходимо, чтобы в потоке выполнялось некоторое действие не с начала, имеет смысл задуматься о сохранении состояния действия и его возобновлении в потоке (добавив глобальные переменные состояния, например) .
Если больше одного потока одновременно обращаются к одному ресурсу, имеет смысл изучить объекты управления потоками (мьютексы, семафоры, секции критического кода) .
З. Ы. : ну и первый закон программиста: не обращайся к объекту из потока, его не создавшего.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Многопоточность в DELPHI
спросили в Delphi
Написание текстового HTML-редактора на Delphi 6
В Delphi7 компонент WebBrowser на вкладке Internet палитры компонентов, в Delphi6 он тоже есть,
подробнее...
Написание текстового HTML-редактора на Delphi 6
В Delphi7 компонент WebBrowser на вкладке Internet палитры компонентов, в Delphi6 он тоже есть,
подробнее...
Преимущества Delphi перед Visual Studio ?
Никаких. Не мучайся, переходи на c#. Одна среда разработки чего стоит. А уж языковых "вкусностей"
подробнее...
Организовать кнопку прервать в Delphi
Заведите глобальную переменную, например NeedStop: Boolean;
var
Form1: TForm1;
подробнее...
спросили в Hughes Oracle Database
Какой язык программирования на данный момент самый востребованный в мире?
1.Java (популярность растёт)
2.C (популярность падает)
3.C++ (популярность падает)
подробнее...
Какой язык программирования на данный момент самый востребованный в мире?
1.Java (популярность растёт)
2.C (популярность падает)
3.C++ (популярность падает)
подробнее...