Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.10.19;
Скачать: [xml.tar.bz2];

Вниз

Потоки команд   Найти похожие ветки 

 
Adm   (2008-01-18 17:51) [0]

Подскажите, плз, как сделать!
Есть модуль потока команд. В теле программы (в основном потоке) я хочу запустить 3 потока (с разными параметрами на входе), чтоб они работали параллельно. Как это реализовать?


 
Kolan ©   (2008-01-18 17:53) [1]

3 раза создай объект потока и все.


 
Leonid Troyanovsky ©   (2008-01-18 19:52) [2]


> Adm   (18.01.08 17:51)  

> Есть модуль потока команд.

Потрудитесь излагать ваши мысли яснее.

--
Regards, LVT.


 
Palladin ©   (2008-01-18 21:59) [3]

ну видимо модуль is юнит, поток is class(TThread)


 
Германн ©   (2008-01-19 00:34) [4]


> Palladin ©   (18.01.08 21:59) [3]
>
> ну видимо модуль is юнит, поток is class(TThread)
>

Два термина объяснил. А третий? Что есть команда?
:)


 
Palladin ©   (2008-01-19 12:28) [5]

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


 
Сергей М. ©   (2008-01-19 12:39) [6]


> хочу запустить 3 потока (с разными параметрами на входе),
>  чтоб они работали параллельно. Как это реализовать?


BeginThread(...параметр1 ..)
BeginThread(...параметр2 ..)
BeginThread(...параметр3 ..)


 
TStas ©   (2008-01-19 16:41) [7]

Не забывая, что если из потоков, происходит обращение к чему-то, что вызовет перерисовку на экране, то делать надо это через Syncronize. Что потоки очень противно отлаживать, т. к. нужно организовать отладочный вывод из потока и простой отладчик в этом плохой помощник. Что часто, если такая возможность есть, работу, которая потом будет выполнена в потоке, отладить в отдельном модуле, а затем запускать в виде потока (Thread). А еще, что очень часто, даже почти везде, без потоков с их мучительной отладкой можно обойтись, заменив их работу в главном потоке, с вызовом Application.ProgressMessages, не злоупотребляя частотой вызовов, т. к. из-за этого тормозит.
Если Вы поясните, зачем Вам их сразу три потребовалось, может, что еще подскажу.


 
MetalFan ©   (2008-01-20 01:29) [8]


> Не забывая, что если из потоков, происходит обращение к
> чему-то, что вызовет перерисовку на экране, то делать надо
> это через Syncronize.

чушь. в Synchronize необходимо оборачивать обращение к объектам VCL главного потока программы.

> т. к. нужно организовать отладочный вывод из потока и простой
> отладчик в этом плохой помощник.

всегда отлаживал многопоточные приложения делфей. проблем серьезных не наблюдал.

> еще, что очень часто, даже почти везде, без потоков с их
> мучительной отладкой можно обойтись, заменив их работу в
> главном потоке, с вызовом Application.ProgressMessages,
> не злоупотребляя частотой вызовов, т. к. из-за этого тормозит.

о да! потоки - зло!
а может ты не умеешь их готовить?!


 
Германн ©   (2008-01-20 01:36) [9]


> MetalFan ©   (20.01.08 01:29) [8]
>
>

С третьим тезисом TStas ©   (19.01.08 16:41) [7] я лично соглашусь. Но с поправкой. Дело не столько в отладке, сколько с ненужностью доп. потоков в каком-то конкретном случае (Бритва Оккама) и не умении решить задачу иначе.


 
Loginov Dmitry ©   (2008-01-20 22:06) [10]

> Не забывая, что если из потоков, происходит обращение к
> чему-то, что вызовет перерисовку на экране, то делать надо
> это через Syncronize.


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


> Что потоки очень противно отлаживать, т. к. нужно организовать
> отладочный вывод из потока и простой отладчик в этом плохой
> помощник.


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


> А еще, что очень часто, даже почти везде, без потоков с
> их мучительной отладкой можно обойтись, заменив их работу
> в главном потоке, с вызовом Application.ProgressMessages,
> не злоупотребляя частотой вызовов, т. к. из-за этого тормозит.


Если задача действительно настолько проста, что для ее решения достаточно обойтись Application.ProgressMessages, то причем тут потоки? Необходимость использования дополнительных потоков нужно оценивать адекватно, исходя из задачи. Там, где они действительно нужны, заменить их Application.ProgressMessages невозможно! :)


 
korneley ©   (2008-01-20 22:55) [11]


>  я хочу запустить 3 потока

Может именно в это дело? Тогда [7] + [9]. "И главное - не перепутать!"(с)


 
korneley ©   (2008-01-20 23:00) [12]

Опаньки! "м" в этом не пропечаталась... :(



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2008.10.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
9-1173732968
Mr.Vlad
2007-03-12 23:56
2008.10.19
3ds max


2-1220531255
zzz
2008-09-04 16:27
2008.10.19
Проверка на последнюю запись


2-1221132574
DMX
2008-09-11 15:29
2008.10.19
Уникальная строка


15-1219916607
Медвежонок Пятачок
2008-08-28 13:43
2008.10.19
Сервер приложений ПО "Контакт"


6-1194361857
weteatr
2007-11-06 18:10
2008.10.19
задача про сет помогите!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский