Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
IAtlAutoThreadModule
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.