Sdílet prostřednictvím


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

_ATL_MODULE

CAtlModule

IAtlAutoThreadModule

CAtlModuleT

CAtlAutoThreadModuleT

CComModule

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.

Viz také

Přehled třídy
Třídy modulů