Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Elementy członkowskie
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. |
| Inicjowanie | 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. Na 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
IAtlAutoThreadModule
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.