Вопрос про апартменты
От: Dimkin Россия  
Дата: 09.07.03 10:31
Оценка:
Всем привет!

Вот решил хорошенько разобраться с апартментами и возник такой вопрос:

Допустим есть у нас такой код:

int _tmain()
{
::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED); // поток в STA

::CoCreateInstance(...); // создаем объект с ThreadinModel=Free в потоке в STA

::CoUninitialize();
}

То бишь в потоке в главном STA созадем компонент (кокласс) с потоковой моделью Free
Классики пишут что объект будет помещен в MTA, а доступ к созданному объекту будет через proxy (межапартметный маршалинг STA <-> MTA),
Так вот сам вопрос — а нафига??? Где здесь засада? Ведь сам класс у нас деклариован как полностью потокобезпасный и почему мы должны общаться через посредника?
И еще, насколько я понял, при создании MTA никаких доп. потоков создаваться не должно? Т.е. будет MTA а в нем ни одного потока, или я не прав? А как тогда?

Гуру — просветите!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.