ATL i marshaler trybu wolnych wątków
Strona Atrybuty kreatora prostych obiektów ATL udostępnia opcję, która umożliwia klasie agregowanie wolnych marshalerów wątkowych (FTM).
Kreator generuje kod w celu utworzenia wystąpienia bezpłatnego marshalera wątkowego w FinalConstruct
programie i wydania tego wystąpienia w programie FinalRelease
. Makro COM_INTERFACE_ENTRY_AGGREGATE jest automatycznie dodawane do mapy COM, aby upewnić się, że QueryInterface
żądania dla IMarshal są obsługiwane przez wolny marshaler wątkowy.
Wolny marshaler wątkowy umożliwia bezpośredni dostęp do interfejsów w obiekcie z dowolnego wątku w tym samym procesie, przyspieszając wywołania między apartamentami. Ta opcja jest przeznaczona dla klas używających modelu Obu wątków.
W przypadku korzystania z tej opcji klasy muszą brać na siebie odpowiedzialność za bezpieczeństwo wątków swoich danych. Ponadto obiekty, które agregują wolny marshaler wątkowy i muszą używać wskaźników interfejsu uzyskanych z innych obiektów, muszą wykonać dodatkowe kroki, aby upewnić się, że interfejsy są prawidłowo marshalowane. Zazwyczaj polega to na przechowywaniu wskaźników interfejsu w globalnej tabeli interfejsu (GIT) i pobieraniu wskaźnika z usługi GIT za każdym razem, gdy jest używany. AtL udostępnia klasę CComGITPtr , która ułatwia korzystanie ze wskaźników interfejsu przechowywanych w usłudze GIT.
Zobacz też
Pojęcia
CoCreateFreeThreadedMarshaler
IMarshal
Kiedy używać tabeli interfejsu globalnego
Problemy wątkowe serwera przetwarzania