COM - потоки и контексты
От: Чистяков В.Ю. Российская Империя www.nemerle.org
Дата: 27.01.02 05:59
Оценка: 115 (3)
Статья :
COM — потоки и контексты
Автор(ы): Чистяков В.Ю.


Авторы :
Чистяков В.Ю.

Аннотация :
При реализации модели апартаментов (apartment model) программисты из Microsoft воспользовались своими «окнами». Вернее, не своими окнами, а их очередями сообщений. В оконных очередях сообщений реализован гибкий и производительный механизм обработки поступающих сообщений. Поддерживается как синхронная, так и асинхронная обработка. Rama Krishna предложил неординарный, но очень простой способ показать, как работает апартаментная модель в COM. Суть этого метода заключается в том, чтобы подглядывая за оконными очередями (создаваемыми и используемыми COM) воочию увидеть как работает COM.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
исходники к статье
От: Yurets Земля  
Дата: 28.04.03 18:43
Оценка:
ftp://ftp.optim.ru/pub/cs/2000/4/ComThreading.zip
Не нужно было юзать Spy++...
От: MaximE Великобритания  
Дата: 31.03.03 08:35
Оценка:
Spy++ слишком устарел — он не показывает Message-Only Windows. Надо было воспользваться например Winspector Spy с www.codeproject.com — и тогда вся эта кухня с созданием окон для синхронизации STA была бы видна и на win2000/xp.
неверное урло на исходники к статье
От: dad  
Дата: 13.01.03 16:09
Оценка:
.
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
COMThreading.dsw
От: skif  
Дата: 28.01.02 05:59
Оценка:
Где взять исходники COMThreading.dsw ?
Re: COMThreading.dsw
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.05.02 08:53
Оценка:
Если не ошибаюсь, воркспэйс там один на все C++-ые прокты.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Не нужно было юзать Spy++...
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.03 21:29
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Spy++ слишком устарел — он не показывает Message-Only Windows.


Насколько я знаю, новая версия (например, из VS.NET) показывает.

ME> Надо было воспользваться например Winspector Spy с www.codeproject.com — и тогда вся эта кухня с созданием окон для синхронизации STA была бы видна и на win2000/xp.


Давно это было. Да и возиться влом было. Хотя конечно надо было...
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: неверное урло на исходники к статье
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.03 21:29
Оценка:
Вроде работает. Значит починили...
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: COMThreading.dsw
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 05.08.03 03:17
Оценка:
Здравствуйте, skif, Вы писали:

S>Где взять исходники COMThreading.dsw ?


ну вот, не прошло и трех лет, как их можно взять по ссылке из статьи — http://www.rsdn.ru/article/com/COM_TnC/ComThreading.zip
Re: COM - потоки и контексты
От: ssm Россия  
Дата: 24.08.04 14:31
Оценка:
Здравствуйте, Чистяков В.Ю., Вы писали:

ЧВЮ>Статья :


Re: COM - потоки и контексты
От: vyakhir  
Дата: 26.04.05 11:47
Оценка:
Хорошая статья.

Маленькое замечание. В статье автор приводит пример использования функции MsgWaitForMultipleObjects
//Если поток закончил свою работу...
if(dwRet != WAIT_OBJECT_0 + 1)
    break; //то выходим из цикла

Этот фрагмент не будет работать правильно. Если мы хотим отловить ситуацию, когда MsgWaitForMultipleObjects закончила свою работу именно потому, что поток, который мы ждем, завершился, то нужно проверять значения в диапазоне от WAIT_OBJECT_0 до WAIT_OBJECT_0 + <количество потоков, которые мы ждем> — 1. Поэтому в данном случае (для одного потока) пример нужно переписать так:

//Если поток закончил свою работу...
if(dwRet != WAIT_OBJECT_0)
    break; //то выходим из цикла
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.