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

Вниз

Синхронизация потоков   Найти похожие ветки 

 
Armature_Current   (2009-07-31 13:32) [0]

Всем доброго времени суток!
Начну с преамбулы. Есть внешнее устройство, общение с которым происходит по RS232(Только Rx, Tx и Gnd). Это устройство может слать данные как небольшим пакетом (байты синхронизации плюс небольшая информационная часть, байтов 10, допустим посылает свой Id), так и большим непрерывным пакетом (допустим приложение на компьютере прорисовывает осциллограммы оцифрованных данных с микроконтроллера).

А теперь вопрос:
Есть различные способы отправки данных из доп. потока:
1. Synchronize()
2. PostMessage()
3. SendMessage()
Так вот какой из них лучше подойдет для реализации заявленных задач, если второй грузит основной поток при непрерывном приеме, третий теряет данные в доп. потоке, а про первый ничего плохого сказать не могу, так как вроде пока работает нормально, но опыта у меня мало, вдруг есть какие подводные камни?


 
Anatoly Podgoretsky ©   (2009-07-31 14:01) [1]

> Armature_Current  (31.07.2009 13:32:00)  [0]

4. сообщать об необходимости перерисовки основному потоку (PostMessage) и продолжать заниматься своей работой, естественно прорисовка должна быть быстрее.


 
Сергей М. ©   (2009-07-31 15:03) [2]

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

Разница между Synchronize и SendMessage при использовании на Win32 практически не ощутима - оба вызова будут дожидаться фактической обработки целевым потоком указанного метода или сообщения.

Использование SendMessage вызовет немалые трудности при портировании кода на другие целевые платформы, отличные от Windows.


 
Вариант   (2009-08-03 10:34) [3]


> Armature_Current   (31.07.09 13:32)  


> так и большим непрерывным пакетом (допустим приложение на
> компьютере прорисовывает осциллограммы оцифрованных данных
> с микроконтроллера).


Не делать этого в риал тайм, если действительно большие объемы с приличной скоростью оцифровки. Накапливать если надо в буфере (ах), сохранять на диске и т.п. Смотреть потом уже подготовленные (сохраненные) данные.  Тогда наверное все  равно что ты выберешь из трех тобой заявленных способов.



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

Форум: "WinAPI";
Текущий архив: 2011.07.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.002 c
1-1260380174
alexan
2009-12-09 20:36
2011.07.24
Циклы


2-1303219375
harisma
2011-04-19 17:22
2011.07.24
Горизонтальная прокрутка в TTreeView


2-1303379680
samalex2504
2011-04-21 13:54
2011.07.24
Переместить курсор в TEdit на начало


2-1302880220
loki3d
2011-04-15 19:10
2011.07.24
передача большого файла через Socket


2-1303316751
Лариса
2011-04-20 20:25
2011.07.24
Много вопросов по StringGrid





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