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

Вниз

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

 
Nucl   (2003-05-29 14:57) [0]

Я заметил что некоторые вещи, которые я обычно реализую на таймере, некоторые гуру заменяют потоками. Объясните, где здесь собака зарыта?
Из последнего, что попадалось: замена таймера потоком, чтение из COM порта в потоке.


 
clickmaker   (2003-05-29 15:22) [1]

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


 
Digitman   (2003-05-29 15:26) [2]


> Nucl


"собака зарыта" в механизме сообщений Windows, при котором сообщения, адресованные окнам, созданным конкретным кодовым потоком, выбираются из очереди/диспетчеризуются/обрабатываются этим код.потоком последовательно.

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


 
Nucl   (2003-05-29 15:31) [3]

Да, но здесь же возникает проблема синхронизации потоков.
А виндовые сообщения можно "подтолкнуть" вызвав application.ProcessMessages.


 
Serginio   (2003-05-29 15:35) [4]

Таймеры прерывают работу приложения. И каждое прерывание обрабатывается в главном потоке. При использовании таймера все вычисления происходят ассинхронно. Некоторые даже вставляют таймеры в поток. Мне больше нравятся потоки со слипами намного меньших по времени нужного, но все зависит от реализации.


 
Digitman   (2003-05-29 15:43) [5]


> Nucl


> возникает проблема синхронизации потоков


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


> А виндовые сообщения можно "подтолкнуть" вызвав application.ProcessMessages.
>


Не "виндовые" (все они виндовые !), а сообщения, адресованные основному код.потоку и окнам, им созданным.

А упомянутое "толкание" ведь кроме быстрого решения проблемы имеет и ряд немалых недостатков !



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

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

Наверх





Память: 0.45 MB
Время: 0.029 c
3-26392
AlexAvz
2003-05-21 15:22
2003.06.09
БД PARADOX


14-26739
Agent[007]
2003-05-18 18:47
2003.06.09
Setup.exe


7-26799
Tenrai
2003-03-30 07:55
2003.06.09
Как отследить нажатие определенной клавиши?


1-26497
KA-87
2003-05-29 20:30
2003.06.09
Как отловить появление MessageBox а?


1-26546
borg
2003-05-28 09:32
2003.06.09
Edit + степень





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский