Udostępnij za pośrednictwem


Klasa CComAutoThreadModule

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

Ważne

Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Składnia

template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule

Parametry

ThreadAllocator
[in] Klasa zarządzająca wyborem wątków. Wartość domyślna to CComSimpleThreadAllocator.

Członkowie

Metody

Function opis
Createinstance Wybiera wątek, a następnie tworzy obiekt w skojarzonym mieszkaniu.
GetDefaultThreads (Statyczne) Dynamicznie oblicza liczbę wątków dla modułu na podstawie liczby procesorów.
Init Tworzy wątki modułu.
Zablokuj Zwiększa liczbę blokad modułu i bieżącego wątku.
Odblokować Dekrementuje liczbę blokad w module i w bieżącym wątku.

Składowe danych

Element członkowski danych opis
dwThreadID Zawiera identyfikator bieżącego wątku.
m_Allocator Zarządza wyborem wątków.
m_nThreads Zawiera liczbę wątków w module.
m_pApartments Zarządza apartamentami modułu.

Uwagi

Uwaga

Ta klasa jest przestarzała i została zastąpiona przez klasy pochodne CAtlAutoThreadModule i CAtlModule . Poniższe informacje służą do używania ze starszymi wersjami usługi ATL.

CComAutoThreadModule program pochodzi z CComModule , aby zaimplementować serwer COM typu thread-pooled, apartment-model dla usług EXEs i Windows. CComAutoThreadModule Używa CComApartment do zarządzania mieszkaniem dla każdego wątku w module.

Utwórz moduł na podstawie CComAutoThreadModule tego, kiedy chcesz utworzyć obiekty w wielu mieszkaniach. Musisz również uwzględnić makro DECLARE_CLASSFACTORY_AUTO_THREAD w definicji klasy obiektu, aby określić CComClassFactoryAutoThread jako fabrykę klas.

Domyślnie aplikacja APPWizard COM ATL (Kreator projektu ATL w programie Visual Studio .NET) będzie pochodzić z modułu .CComModule Aby użyć metody CComAutoThreadModule, zmodyfikuj definicję klasy. Przykład:

class CMyModule : 
public CComAutoThreadModule<CComSimpleThreadAllocator>
{
public:
   LONG Unlock()
   {
      LONG l = CComAutoThreadModule<CComSimpleThreadAllocator>::Unlock();
      if (l == 0)
         PostThreadMessage(dwThreadID, WM_QUIT, 0, 0);
      return l;
   }

   DWORD dwThreadID;
};

Hierarchia dziedziczenia

_ATL_MODULE

Catlmodule

IAtlAutoThreadModule

CAtlModuleT

CAtlAutoThreadModuleT

Ccommodule

CComAutoThreadModule

Wymagania

Nagłówek: atlbase.h

CComAutoThreadModule::CreateInstance

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

HRESULT CreateInstance(
    void* pfnCreateInstance,
    REFIID riid,
    void** ppvObj);

Parametry

pfnCreateInstance
[in] Wskaźnik do funkcji twórcy.

Riid
[in] Identyfikator IID żądanego interfejsu.

ppvObj
[out] Wskaźnik do wskaźnika interfejsu zidentyfikowany przez riid. Jeśli obiekt nie obsługuje tego interfejsu, parametr ppvObj ma wartość NULL.

Wartość zwracana

Standardowa wartość HRESULT.

Uwagi

Wybiera wątek, a następnie tworzy obiekt w skojarzonym mieszkaniu.

CComAutoThreadModule::d wThreadID

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

DWORD dwThreadID;

Uwagi

Zawiera identyfikator bieżącego wątku.

CComAutoThreadModule::GetDefaultThreads

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

static int GetDefaultThreads();

Wartość zwracana

Liczba wątków do utworzenia w module EXE.

Uwagi

Ta funkcja statyczna dynamicznie oblicza maksymalną liczbę wątków dla modułu EXE na podstawie liczby procesorów. Domyślnie ta wartość zwracana jest przekazywana do metody Init w celu utworzenia wątków.

CComAutoThreadModule::Init

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

HRESULT Init(
    _ATL_OBJMAP_ENTRY* p,
    HINSTANCE h,
    const GUID* plibid = NULL,
    int nThreads = GetDefaultThreads());

Parametry

p
[in] Wskaźnik do tablicy wpisów mapy obiektów.

h
[in] Funkcja HINSTANCE przekazana do DLLMain lub WinMain.

plibid
[in] Wskaźnik do LIBID biblioteki typów skojarzonej z projektem.

nWątki
[in] Liczba wątków do utworzenia. Domyślnie nThreads to wartość zwracana przez element GetDefaultThreads.

Uwagi

Inicjuje składowe danych i tworzy liczbę wątków określonych przez nThreads.

CComAutoThreadModule::Lock

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

LONG Lock();

Wartość zwracana

Wartość, która może być przydatna do diagnostyki lub testowania.

Uwagi

Wykonuje niepodzielne przyrosty liczby blokad dla modułu i dla bieżącego wątku. CComAutoThreadModule używa liczby blokad modułów, aby określić, czy wszyscy klienci uzyskują dostęp do modułu. Liczba blokad w bieżącym wątku jest używana do celów statystycznych.

CComAutoThreadModule::m_Allocator

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

ThreadAllocator  m_Allocator;

Uwagi

Obiekt zarządzający wyborem wątku. Domyślnie ThreadAllocator parametr szablonu klasy to CComSimpleThreadAllocator.

CComAutoThreadModule::m_nThreads

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

int m_nThreads;

Uwagi

Zawiera liczbę wątków w module EXE. Gdy wywołana jest funkcja Init , m_nThreads jest ustawiona na wartość parametru nThreads . Skojarzone z każdym wątkiem mieszkanie jest zarządzane przez obiekt CComApartment .

CComAutoThreadModule::m_pApartments

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

CComApartment* m_pApartments;

Uwagi

Wskazuje tablicę obiektów CComApartment , z których każdy zarządza mieszkaniem w module. Liczba elementów w tablicy jest oparta na m_nThreads składowej.

CComAutoThreadModule::Unlock

Od wersji ATL 7.0 jest CComAutoThreadModule przestarzałe: zobacz Klasy modułów ATL, aby uzyskać więcej szczegółów.

LONG Unlock();

Wartość zwracana

Wartość, która może być przydatna do diagnostyki lub testowania.

Uwagi

Wykonuje niepodzielne dekrementację liczby blokad dla modułu i dla bieżącego wątku. CComAutoThreadModule używa liczby blokad modułów, aby określić, czy wszyscy klienci uzyskują dostęp do modułu. Liczba blokad w bieżącym wątku jest używana do celów statystycznych.

Gdy liczba blokad modułu osiągnie zero, moduł może zostać zwolniony.

Zobacz też

Omówienie klasy
Klasy modułów