Aracılığıyla paylaş


CComAutoThreadModule Sınıfı

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

Önemli

Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.

Sözdizimi

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

Parametreler

ThreadAllocator
[in] İş parçacığı seçimini yöneten sınıf. Varsayılan değer CComSimpleThreadAllocator'dır.

Üyeler

Yöntemler

İşlev Tanım
Createınstance Bir iş parçacığı seçer ve ardından ilişkili dairede bir nesne oluşturur.
GetDefaultThreads (Statik) İşlemci sayısına göre modül için iş parçacığı sayısını dinamik olarak hesaplar.
Init Modülün iş parçacıklarını oluşturur.
Kilitle Modüldeki ve geçerli iş parçacığındaki kilit sayısını artırır.
Kilidini Modüldeki ve geçerli iş parçacığındaki kilit sayısını azaltma.

Veri Üyeleri

Veri üyesi Tanım
dwThreadID Geçerli iş parçacığının tanımlayıcısını içerir.
m_Allocator İş parçacığı seçimini yönetir.
m_nThreads Modüldeki iş parçacığı sayısını içerir.
m_pApartments Modülün dairelerini yönetir.

Açıklamalar

Dekont

Bu sınıf eski, CAtlAutoThreadModule ve CAtlModule türetilmiş sınıfları tarafından değiştirilmiştir. Aşağıdaki bilgiler, ATL'nin eski sürümleriyle kullanım içindir.

CComAutoThreadModuleCComModule'den türetilir ve EXE'ler ve Windows hizmetleri için iş parçacığı havuzuna alınmış, apartman modeli com sunucusu uygular. CComAutoThreadModulemodüldeki her iş parçacığı için bir daireyi yönetmek için CComApartment kullanır.

Birden çok dairede nesne oluşturmak istediğinizde modülünüzü CComAutoThreadModule türetebilirsiniz. Sınıf fabrikası olarak CComClassFactoryAutoThread belirtmek için nesnenizin sınıf tanımına DECLARE_CLASSFACTORY_AUTO_THREAD makroyu da eklemeniz gerekir.

Varsayılan olarak, ATL COM AppWizard (Visual Studio .NET'teki ATL Proje Sihirbazı) modülünüzü adresinden CComModuletüretecektir. kullanmak CComAutoThreadModuleiçin sınıf tanımını değiştirin. Örnek:

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;
};

Devralma Hiyerarşisi

_ATL_MODULE

CAtlModule

IAtlAutoThreadModule

CAtlModuleT

Catlautothreadmodulet

Ccommodule

CComAutoThreadModule

Gereksinimler

Üst bilgi: atlbase.h

CComAutoThreadModule::CreateInstance

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

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

Parametreler

pfnCreateInstance
[in] Oluşturucu işlevinin işaretçisi.

Riid
[in] İstenen arabirimin IID değeri.

ppvObj
[out] riid tarafından tanımlanan arabirim işaretçisine ilişkin bir işaretçi. Nesne bu arabirimi desteklemiyorsa, ppvObj NULL olarak ayarlanır.

İade Değeri

Standart bir HRESULT değeri.

Açıklamalar

Bir iş parçacığı seçer ve ardından ilişkili dairede bir nesne oluşturur.

CComAutoThreadModule::d wThreadID

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

DWORD dwThreadID;

Açıklamalar

Geçerli iş parçacığının tanımlayıcısını içerir.

CComAutoThreadModule::GetDefaultThreads

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

static int GetDefaultThreads();

İade Değeri

EXE modülünde oluşturulacak iş parçacığı sayısı.

Açıklamalar

Bu statik işlev, exe modülü için en fazla iş parçacığı sayısını işlemci sayısına göre dinamik olarak hesaplar. Varsayılan olarak, bu dönüş değeri iş parçacıklarını oluşturmak için Init yöntemine geçirilir.

CComAutoThreadModule::Init

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

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

Parametreler

P
[in] Nesne eşleme girdileri dizisinin işaretçisi.

h
[in] HINSTANCE veya WinMainöğesine DLLMain geçirildi.

plibid
[in] Projeyle ilişkilendirilmiş tür kitaplığının LIBID işaretçisi.

nThreads
[in] Oluşturulacak iş parçacığı sayısı. Varsayılan olarak, nThreads GetDefaultThreads tarafından döndürülen değerdir.

Açıklamalar

Veri üyelerini başlatır ve nThreads tarafından belirtilen iş parçacığı sayısını oluşturur.

CComAutoThreadModule::Lock

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

LONG Lock();

İade Değeri

Tanılama veya test için yararlı olabilecek bir değer.

Açıklamalar

Modülün ve geçerli iş parçacığının kilit sayısı üzerinde atomik bir artış gerçekleştirir. CComAutoThreadModule modül kilit sayısını kullanarak herhangi bir istemcinin modüle erişip erişmediğini belirler. Geçerli iş parçacığındaki kilit sayısı istatistiksel amaçlar için kullanılır.

CComAutoThreadModule::m_Allocator

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

ThreadAllocator  m_Allocator;

Açıklamalar

İş parçacığı seçimini yöneten nesne. Varsayılan olarak, ThreadAllocator sınıf şablonu parametresi CComSimpleThreadAllocator'dır.

CComAutoThreadModule::m_nThreads

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

int m_nThreads;

Açıklamalar

EXE modülündeki iş parçacığı sayısını içerir. Init çağrıldığında nThreadsm_nThreads parametre değerine ayarlanır. Her iş parçacığının ilişkili dairesi bir CComApartment nesnesi tarafından yönetilir.

CComAutoThreadModule::m_pApartments

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

CComApartment* m_pApartments;

Açıklamalar

Her biri modüldeki bir daireyi yöneten bir CComApartment nesneleri dizisine işaret eder. Dizideki öğelerin sayısı, m_nThreads üyesini temel alır.

CComAutoThreadModule::Unlock

ATL 7.0 CComAutoThreadModule itibarıyla kullanım dışıdır: Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

LONG Unlock();

İade Değeri

Tanılama veya test için yararlı olabilecek bir değer.

Açıklamalar

Modülün ve geçerli iş parçacığının kilit sayısı üzerinde atomik bir düşüş gerçekleştirir. CComAutoThreadModule modül kilit sayısını kullanarak herhangi bir istemcinin modüle erişip erişmediğini belirler. Geçerli iş parçacığındaki kilit sayısı istatistiksel amaçlar için kullanılır.

Modül kilit sayısı sıfıra ulaştığında modül kaldırılabilir.

Ayrıca bkz.

Sınıfa Genel Bakış
Modül Sınıfları