Всем привет!
Вот решил хорошенько разобраться с апартментами и возник такой вопрос:
Допустим есть у нас такой код:
int _tmain()
{
::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED); // поток в STA
::CoCreateInstance(...); // создаем объект с ThreadinModel=Free в потоке в STA
::CoUninitialize();
}
То бишь в потоке в главном STA созадем компонент (кокласс) с потоковой моделью Free
Классики пишут что объект будет помещен в MTA, а доступ к созданному объекту будет через proxy (межапартметный маршалинг STA <-> MTA),
Так вот сам вопрос — а нафига??? Где здесь засада? Ведь сам класс у нас деклариован как полностью потокобезпасный и почему мы должны общаться через посредника?
И еще, насколько я понял, при создании MTA никаких доп. потоков создаваться не должно? Т.е. будет MTA а в нем ни одного потока, или я не прав? А как тогда?
Гуру — просветите!!!