Главная страница
    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.01 c
1-26563
supersan
2003-05-28 12:21
2003.06.09
Excel+рулон+матричный принтер


14-26672
k-man
2003-05-24 09:54
2003.06.09
Glut 3.7


6-26647
Equillibrium
2003-04-08 04:23
2003.06.09
Kak v delphi BANNER sdelat


4-26834
Donpager
2003-03-28 20:55
2003.06.09
Как запустить программу от имени другово юзера?


3-26411
equites
2003-05-21 18:22
2003.06.09
Фильтрация (чуть более, чем обычно)





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