Sdílet prostřednictvím


Zvážení týkající se vláken

Zapisovač komponent ve frontě modelu COM+ je schopen běžet ve vícevláknovém apartmánu (MTA) procesu nebo v jednovláknovém apartmánu (STA). Při spuštění záznamníku v modelu STA COM+ vyžaduje, aby každý apartmán, který obsahuje objekty, měl frontu služby Řízení front zpráv ke zpracování volání z jiných procesů a apartmánů v rámci stejného procesu. To znamená, že pracovní funkce vlákna musí mít smyčku zpráv. Při vytvoření instance zařazené komponenty je vždy vrácen ukazatel proxy rozhraní místo ukazatele přímého rozhraní. Ukazatel je ve skutečnosti odkazem na instanci rekordéru. Pokud je tento odkaz na rozhraní pro záznam předán jinému vláknu, musí být ve původním vláknu stále spuštěna smyčka zpráv systému Windows, aby druhé vlákno mohlo rozhraní deserializovat. Pokud tomu tak není, přijímající vlákno zablokuje volání CoUnmarshalInterface.

Pokud k synchronizaci vláken používáte primitivy, zvažte použití MsgWaitForMultipleObjects místo jiných synchronizačních funkcí. Tím se zkontrolují zprávy ve frontě i stav synchronizačního objektu.