Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Потоковая модель СОМ / 2 сообщений из 2, страница 1 из 1
30.10.2004, 10:57
    #32761993
Chipa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоковая модель СОМ
Привет)
Помогите разобраться с такой проблеммой:
В основном потоке создаю внутрипроцессный сом-сервер,
и запускаю ещё два потока, в которые передаю этот интерфейс. Причём
в последних двух потоках я не вызываю CoInitializeEx

...
int main()
{
...
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
__try{
IInterface *obj = NULL;
CreateInstance(...);
StartThread(..., ThreadProc1, ...);
StartThread(..., ThreadProc2, ...);
WaitForMultipleObjects(...);
}
__finally{
CoUninitialize();
}
}

DWORD WINAPI ThreadProc1(LPVOID lpPar)
{
SParam *par = (SParam*)lpPar;

IInterface *obj1 = par->obj; // здесь передаю интерфейс
// созданный в главном потоке

for(int i = 0; i < par->cnt; i++){
obj1->Method1(par->id, &ret);
... анализирую код ошибки, и переменную ret
}
}
return 0;
}

DWORD WINAPI ThreadProc2(LPVOID lpPar)
{
... такое же содержание как и у ThreadProc1
}


Я не могу понять почему эти два потока спокойно выполняются, т.е. почему
СОМ позволяет потокам не вошедшим ни в какой апартамент вызывать методы
сом-класса, созданного в другом потоке(да ещё в апартаменте STA)???

Если засечь время начала и окончания выполнения метода
IInterface->Method1(...), то видно что они выполняются ОДНОВРЕМЕННО.
Как это понимать???

Проект прилагается в zip-е
...
Рейтинг: 0 / 0
01.11.2004, 13:56
    #32763135
Ми
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоковая модель СОМ
То ли я чего-то не понимаю, то ли проект не полностью выложен.
Файл рабочего пространства, dsw который, где?.. в архиве нету его.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Потоковая модель СОМ / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]