CComAutoThreadModule – třída
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
Důležité
Tuto třídu a její členy nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
Syntaxe
template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule
Parametry
ThreadAllocator
[v] Třída, která spravuje výběr vlákna. Výchozí hodnota je CComSimpleThreadAllocator.
Členové
Metody
Function | Popis |
---|---|
Instance CreateInstance | Vybere vlákno a pak vytvoří objekt v přidruženém bytě. |
GetDefaultThreads | (Statické) Dynamicky vypočítá počet vláken modulu na základě počtu procesorů. |
Init | Vytvoří vlákna modulu. |
Uzamknout | Zvýší počet zámků v modulu a v aktuálním vlákně. |
Odemknout | Dekrementuje počet zámků v modulu a v aktuálním vlákně. |
Datové členy
Datový člen | Popis |
---|---|
dwThreadID | Obsahuje identifikátor aktuálního vlákna. |
m_Allocator | Spravuje výběr vlákna. |
m_nThreads | Obsahuje počet vláken v modulu. |
m_pApartments | Spravuje apartmány modulu. |
Poznámky
Poznámka:
Tato třída je zastaralá, byla nahrazena CAtlAutoThreadModule a CAtlModule odvozené třídy. Následující informace slouží k použití se staršími verzemi KNIHOVNY ATL.
CComAutoThreadModule
odvozuje od CComModule k implementaci serveru MODELU COM s vlákny ve fondu vláken pro služby EXEs a Windows. CComAutoThreadModule
používá CComApartment ke správě bytu pro každé vlákno v modulu.
Odvozujte modul od CComAutoThreadModule
doby, kdy chcete vytvořit objekty ve více apartmánech. Musíte také zahrnout DECLARE_CLASSFACTORY_AUTO_THREAD makro do definice třídy objektu, aby bylo možné určit CComClassFactoryAutoThread jako objekt pro vytváření tříd.
Ve výchozím nastavení bude ATL COM AppWizard (Průvodce projektem ATL v sadě Visual Studio .NET) odvodit váš modul z CComModule
. Chcete-li použít CComAutoThreadModule
, upravte definici třídy. Příklad:
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;
};
Hierarchie dědičnosti
IAtlAutoThreadModule
CComAutoThreadModule
Požadavky
Hlavička: atlbase.h
CComAutoThreadModule::CreateInstance
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
HRESULT CreateInstance(
void* pfnCreateInstance,
REFIID riid,
void** ppvObj);
Parametry
pfnCreateInstance
[v] Ukazatel na funkci tvůrce
riid
[v] IID požadovaného rozhraní.
ppvObj
[ven] Ukazatel na ukazatel rozhraní identifikovaný riidem. Pokud objekt nepodporuje toto rozhraní, ppvObj je nastaven na HODNOTU NULL.
Návratová hodnota
Standardní hodnota HRESULT.
Poznámky
Vybere vlákno a pak vytvoří objekt v přidruženém bytě.
CComAutoThreadModule::d wThreadID
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
DWORD dwThreadID;
Poznámky
Obsahuje identifikátor aktuálního vlákna.
CComAutoThreadModule::GetDefaultThreads
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
static int GetDefaultThreads();
Návratová hodnota
Počet vláken, která se mají vytvořit v modulu EXE.
Poznámky
Tato statická funkce dynamicky vypočítá maximální počet vláken modulu EXE na základě počtu procesorů. Ve výchozím nastavení se tato návratová hodnota předává inicializační metodě pro vytvoření vláken.
CComAutoThreadModule::Init
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
HRESULT Init(
_ATL_OBJMAP_ENTRY* p,
HINSTANCE h,
const GUID* plibid = NULL,
int nThreads = GetDefaultThreads());
Parametry
p
[v] Ukazatel na pole položek mapování objektů.
h
[v] HINSTANCE předaný DLLMain
nebo WinMain
.
plibid
[v] Ukazatel na LIBID knihovny typů přidružené k projektu.
nThreads
[v] Počet vláken, která se mají vytvořit. Ve výchozím nastavení nThreads je hodnota vrácená GetDefaultThreads.
Poznámky
Inicializuje datové členy a vytvoří počet vláken určených příkazem nThreads.
CComAutoThreadModule::Lock
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
LONG Lock();
Návratová hodnota
Hodnota, která může být užitečná pro diagnostiku nebo testování.
Poznámky
Provede atomický přírůstek počtu zámků pro modul a pro aktuální vlákno. CComAutoThreadModule
pomocí počtu zámků modulu určí, jestli k modulu přistupují klienti. Počet zámků v aktuálním vlákně se používá pro statistické účely.
CComAutoThreadModule::m_Allocator
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
ThreadAllocator m_Allocator;
Poznámky
Objekt, který spravuje výběr vlákna. Ve výchozím nastavení ThreadAllocator
je parametr šablony třídy CComSimpleThreadAllocator.
CComAutoThreadModule::m_nThreads
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
int m_nThreads;
Poznámky
Obsahuje počet vláken v modulu EXE. Při zavolání m_nThreads
Init je nastavena na hodnotu parametru nThreads. Každý přidružený byt vlákna je spravován objektem CComApartment .
CComAutoThreadModule::m_pApartments
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
CComApartment* m_pApartments;
Poznámky
Odkazuje na pole objektů CComApartment , z nichž každý spravuje byt v modulu. Počet prvků v poli je založen na m_nThreads členu.
CComAutoThreadModule::Unlock
Od verze ATL 7.0 CComAutoThreadModule
je zastaralé: další podrobnosti najdete v tématu Třídy modulů ATL.
LONG Unlock();
Návratová hodnota
Hodnota, která může být užitečná pro diagnostiku nebo testování.
Poznámky
Provede atomický dekrement počtu zámků pro modul a aktuální vlákno. CComAutoThreadModule
pomocí počtu zámků modulu určí, jestli k modulu přistupují klienti. Počet zámků v aktuálním vlákně se používá pro statistické účely.
Když počet zámků modulu dosáhne nuly, může být modul uvolněn.