Bagikan melalui


Kelas CComAutoThreadModule

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

Penting

Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.

Sintaks

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

Parameter

ThreadAllocator
[di] Kelas yang mengelola pemilihan utas. Nilai defaultnya adalah CComSimpleThreadAllocator.

Anggota

Metode

Fungsi Deskripsi
CreateInstance Memilih utas lalu membuat objek di apartemen terkait.
GetDefaultThreads (Statis) Menghitung jumlah utas untuk modul secara dinamis berdasarkan jumlah prosesor.
Init Membuat utas modul.
Kunci Menaikkan jumlah kunci pada modul dan pada utas saat ini.
Membuka Mengurangi jumlah kunci pada modul dan pada utas saat ini.

Anggota Data

Anggota data Deskripsi
dwThreadID Berisi pengidentifikasi utas saat ini.
m_Allocator Mengelola pilihan utas.
m_nThreads Berisi jumlah utas dalam modul.
m_pApartments Mengelola apartemen modul.

Keterangan

Catatan

Kelas ini usang, setelah digantikan oleh kelas turunan CAtlAutoThreadModule dan CAtlModule . Informasi berikut adalah untuk digunakan dengan rilis ATL yang lebih lama.

CComAutoThreadModule berasal dari CComModule untuk mengimplementasikan server COM model apartemen yang dikumpulkan utas untuk EXEs dan layanan Windows. CComAutoThreadModulemenggunakan CComApartment untuk mengelola apartemen untuk setiap utas dalam modul.

Dapatkan modul Anda dari CComAutoThreadModule kapan Anda ingin membuat objek di beberapa apartemen. Anda juga harus menyertakan makro DECLARE_CLASSFACTORY_AUTO_THREAD dalam definisi kelas objek Anda untuk menentukan CComClassFactoryAutoThread sebagai pabrik kelas.

Secara default, APPWizard COM ATL (Wizard Proyek ATL di Visual Studio .NET) akan memperoleh modul Anda dari CComModule. Untuk menggunakan CComAutoThreadModule, ubah definisi kelas. Contohnya:

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

Hierarki Warisan

_ATL_MODULE

CAtlModule

IAtlAutoThreadModule

CAtlModuleT

CAtlAutoThreadModuleT

CComModule

CComAutoThreadModule

Persyaratan

Header: atlbase.h

CComAutoThreadModule::CreateInstance

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

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

Parameter

pfnCreateInstance
[di] Penunjuk ke fungsi pembuat.

riid
[masuk] IID antarmuka yang diminta .

ppvObj
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi oleh riid. Jika objek tidak mendukung antarmuka ini, ppvObj diatur ke NULL.

Tampilkan Nilai

Nilai HRESULT standar.

Keterangan

Memilih utas lalu membuat objek di apartemen terkait.

CComAutoThreadModule::d wThreadID

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

DWORD dwThreadID;

Keterangan

Berisi pengidentifikasi utas saat ini.

CComAutoThreadModule::GetDefaultThreads

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

static int GetDefaultThreads();

Tampilkan Nilai

Jumlah utas yang akan dibuat dalam modul EXE.

Keterangan

Fungsi statis ini secara dinamis menghitung jumlah maksimum utas untuk modul EXE, berdasarkan jumlah prosesor. Secara default, nilai pengembalian ini diteruskan ke metode Init untuk membuat utas.

CComAutoThreadModule::Init

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

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

Parameter

p
[di] Penunjuk ke array entri peta objek.

h
[di] HINSTANCE diteruskan ke DLLMain atau WinMain.

plibid
[di] Penunjuk ke LIBID pustaka jenis yang terkait dengan proyek.

nThreads
[di] Jumlah utas yang akan dibuat. Secara default, nThreads adalah nilai yang dikembalikan oleh GetDefaultThreads.

Keterangan

Menginisialisasi anggota data dan membuat jumlah utas yang ditentukan oleh nThreads.

CComAutoThreadModule::Lock

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

LONG Lock();

Tampilkan Nilai

Nilai yang mungkin berguna untuk diagnostik atau pengujian.

Keterangan

Melakukan kenaikan atomik pada jumlah kunci untuk modul dan untuk utas saat ini. CComAutoThreadModule menggunakan jumlah kunci modul untuk menentukan apakah ada klien yang mengakses modul. Jumlah kunci pada utas saat ini digunakan untuk tujuan statistik.

CComAutoThreadModule::m_Allocator

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

ThreadAllocator  m_Allocator;

Keterangan

Objek yang mengelola pilihan utas. Secara default, ThreadAllocator parameter templat kelas adalah CComSimpleThreadAllocator.

CComAutoThreadModule::m_nThreads

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

int m_nThreads;

Keterangan

Berisi jumlah utas dalam modul EXE. Ketika Init dipanggil, m_nThreads diatur ke nilai parameter nThreads . Setiap apartemen terkait utas dikelola oleh objek CComApartment .

CComAutoThreadModule::m_pApartments

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

CComApartment* m_pApartments;

Keterangan

Menunjuk ke array objek CComApartment , yang masing-masing mengelola apartemen dalam modul. Jumlah elemen dalam array didasarkan pada anggota m_nThreads .

CComAutoThreadModule::Unlock

Pada ATL 7.0, CComAutoThreadModule sudah usang: lihat Kelas Modul ATL untuk detail selengkapnya.

LONG Unlock();

Tampilkan Nilai

Nilai yang mungkin berguna untuk diagnostik atau pengujian.

Keterangan

Melakukan penurunan atomik pada jumlah kunci untuk modul dan untuk utas saat ini. CComAutoThreadModule menggunakan jumlah kunci modul untuk menentukan apakah ada klien yang mengakses modul. Jumlah kunci pada utas saat ini digunakan untuk tujuan statistik.

Ketika jumlah kunci modul mencapai nol, modul dapat dibongkar.

Lihat juga

Gambaran Umum Kelas
Kelas Modul