Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
CComMultiThreadModel bir değişkenin değerini artırmaya ve azaltmaya yönelik iş parçacığı güvenli yöntemler sağlar.
Sözdizimi
class CComMultiThreadModel
Üyeler
Genel Tür Tanımları
| Veri Akışı Adı | Açıklama |
|---|---|
| CComMultiThreadModel::AutoCriticalSection | CComAutoCriticalSection sınıfına başvurur. |
| CComMultiThreadModel::CriticalSection | CComCriticalSection sınıfına başvurur. |
| CComMultiThreadModel::ThreadModelNoCS | CComMultiThreadModelNoCS sınıfına başvurur. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| CComMultiThreadModel::D ecrement | (Statik) Belirtilen değişkenin değerini iş parçacığı güvenli bir şekilde azaltma. |
| CComMultiThreadModel::Increment | (Statik) Belirtilen değişkenin değerini iş parçacığı güvenli bir şekilde artırır. |
Açıklamalar
Genellikle, CComObjectThreadModel veya CComGlobalsThreadModel iki typedef adı üzerinden CComMultiThreadModel kullanırsınız. Her typedef birinin başvurmuş olduğu sınıf, aşağıdaki tabloda gösterildiği gibi kullanılan iş parçacığı modeline bağlıdır:
| typedef | Tek iş parçacığı oluşturma | Daire iş parçacığı oluşturma | Ücretsiz iş parçacığı oluşturma |
|---|---|---|---|
CComObjectThreadModel |
S | S | M |
CComGlobalsThreadModel |
S | M | M |
S= CComSingleThreadModel; M= CComMultiThreadModel
CComMultiThreadModel kendisi üç typedef ad tanımlar.
AutoCriticalSection ve CriticalSection kritik bir bölümün sahipliğini elde etmek ve yayınlamak için yöntemler sağlayan başvuru sınıfları.
ThreadModelNoCS references sınıfı [CComMultiThreadModelNoCS(ccommultithreadmodelnocs-class.md).
Gereksinimler
Üst bilgi: atlbase.h
CComMultiThreadModel::AutoCriticalSection
kullanırken CComMultiThreadModeltypedef adAutoCriticalSection, kritik bir bölüm nesnesinin sahipliğini almak ve serbest bırakmak için yöntemler sağlayan CComAutoCriticalSection sınıfına başvurur.
typedef CComAutoCriticalSection AutoCriticalSection;
Açıklamalar
CComSingleThreadModel ve CComMultiThreadModelNoCS ayrıca için AutoCriticalSectiontanımlar içerir. Aşağıdaki tabloda, iş parçacığı modeli sınıfı ile tarafından AutoCriticalSectionbaşvuruda bulunan kritik bölüm sınıfı arasındaki ilişki gösterilmektedir:
| öğesinde tanımlanan sınıf | Başvurulan sınıf |
|---|---|
CComMultiThreadModel |
CComCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
'a AutoCriticalSectionek olarak CriticalSectiontypedefda kullanabilirsiniz. CRT başlangıç kodunu ortadan kaldırmak istiyorsanız genel nesnelerde veya statik sınıf üyelerinde belirtmemelisiniz AutoCriticalSection .
Örnek
Aşağıdaki kod CComObjectRootEx'in ardından modellenir ve bir iş parçacığı ortamında kullanıldığını gösterirAutoCriticalSection.
template<class ThreadModel>
class CMyAutoCritClass
{
public:
typedef ThreadModel _ThreadModel;
typedef typename _ThreadModel::AutoCriticalSection _CritSec;
CMyAutoCritClass() : m_dwRef(0) {}
ULONG InternalAddRef()
{
return _ThreadModel::Increment(&m_dwRef);
}
ULONG InternalRelease()
{
return _ThreadModel::Decrement(&m_dwRef);
}
void Lock() { m_critsec.Lock( ); }
void Unlock() { m_critsec.Unlock(); }
private:
_CritSec m_critsec;
LONG m_dwRef;
Aşağıdaki tablolarda, şablon parametresine InternalAddRef ve uygulama tarafından kullanılan iş parçacığı modeline bağlı Lock olarak ve ThreadModel yöntemlerinin sonuçları gösterilir:
ThreadModel = CComObjectThreadModel
| Metot | Tekli veya Daire İş Parçacığı Oluşturma | Boş İş Parçacığı Oluşturma |
|---|---|---|
InternalAddRef |
Artış iş parçacığı açısından güvenli değildir. | Artış iş parçacığı açısından güvenlidir. |
Lock |
Hiçbir şey yapmaz; kilitlenmesi gereken kritik bir bölüm yok. | Kritik bölüm kilitli. |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
| Metot | Tekli veya Daire İş Parçacığı Oluşturma | Boş İş Parçacığı Oluşturma |
|---|---|---|
InternalAddRef |
Artış iş parçacığı açısından güvenli değildir. | Artış iş parçacığı açısından güvenlidir. |
Lock |
Hiçbir şey yapmaz; kilitlenmesi gereken kritik bir bölüm yok. | Hiçbir şey yapmaz; kilitlenmesi gereken kritik bir bölüm yok. |
CComMultiThreadModel::CriticalSection
kullanırken CComMultiThreadModeltypedef adCriticalSection, kritik bir bölüm nesnesinin sahipliğini almak ve serbest bırakmak için yöntemler sağlayan CComCriticalSection sınıfına başvurur.
typedef CComCriticalSection CriticalSection;
Açıklamalar
CComSingleThreadModel ve CComMultiThreadModelNoCS ayrıca için CriticalSectiontanımlar içerir. Aşağıdaki tabloda, iş parçacığı modeli sınıfı ile tarafından CriticalSectionbaşvuruda bulunan kritik bölüm sınıfı arasındaki ilişki gösterilmektedir:
| öğesinde tanımlanan sınıf | Başvurulan sınıf |
|---|---|
CComMultiThreadModel |
CComCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
öğesine CriticalSectionek olarak AutoCriticalSectiontypedefda kullanabilirsiniz. CRT başlangıç kodunu ortadan kaldırmak istiyorsanız genel nesnelerde veya statik sınıf üyelerinde belirtmemelisiniz AutoCriticalSection .
Örnek
Bkz . CComMultiThreadModel::AutoCriticalSection.
CComMultiThreadModel::D ecrement
Bu statik işlev, p ile işaret edilen değişkenin değerini azalan InterlockedDecrement Win32 işlevini çağırır.
static ULONG WINAPI Decrement(LPLONG p) throw ();
Parametreler
p
[in] Azaltılacak değişkenin işaretçisi.
Dönüş Değeri
Azaltmanın sonucu 0 ise, Decrement 0 döndürür. Azaltmanın sonucu sıfır değilse, dönüş değeri de sıfır olmayandır, ancak azaltmanın sonucuna eşit olmayabilir.
Açıklamalar
InterlockedDecrement birden fazla iş parçacığının aynı anda bu değişkeni kullanmasını engeller.
CComMultiThreadModel::Increment
Bu statik işlev, işaret edilen değişkenin değerini p ile artıran InterlockedIncrement Win32 işlevini çağırır.
static ULONG WINAPI Increment(LPLONG p) throw ();
Parametreler
p
[in] Artırılacak değişken işaretçisi.
Dönüş Değeri
Artışın sonucu 0 ise, Increment 0 döndürür. Artışın sonucu sıfır değilse, dönüş değeri de sıfırdan farklı olur, ancak artışın sonucuna eşit olmayabilir.
Açıklamalar
InterlockedIncrement birden fazla iş parçacığının aynı anda bu değişkeni kullanmasını engeller.
CComMultiThreadModel::ThreadModelNoCS
kullanırkenCComMultiThreadModel, ad typedef CComMultiThreadModelNoCS sınıfına ThreadModelNoCS.
typedef CComMultiThreadModelNoCS ThreadModelNoCS;
Açıklamalar
CComMultiThreadModelNoCS bir değişkeni artırmaya ve azaltmaya yönelik iş parçacığı güvenli yöntemler sağlar; ancak kritik bir bölüm sağlamaz.
CComSingleThreadModel ve CComMultiThreadModelNoCS ayrıca için ThreadModelNoCStanımları içerir. Aşağıdaki tabloda, iş parçacığı modeli sınıfı ile tarafından ThreadModelNoCSbaşvuruda bulunan sınıf arasındaki ilişki gösterilmektedir:
| öğesinde tanımlanan sınıf | Başvurulan sınıf |
|---|---|
CComMultiThreadModel |
CComMultiThreadModelNoCS |
CComSingleThreadModel |
CComSingleThreadModel |
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
Örnek
Bkz . CComMultiThreadModel::AutoCriticalSection.
Ayrıca bkz.
CComSingleThreadModel Sınıfı
CComAutoCriticalSection Sınıfı
CComCriticalSection Sınıfı
Sınıfa Genel Bakış