Aracılığıyla paylaş


CWorkerThread Sınıfı

Bu sınıf bir çalışan iş parçacığı oluşturur veya var olan bir iş parçacığını kullanır, bir veya daha fazla çekirdek nesne tutamacını bekler ve tanıtıcılardan biri işaretlendiğinde belirtilen istemci işlevini yürütür.

Önemli

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

Sözdizimi

template <class ThreadTraits = DefaultThreadTraits>
class CWorkerThread

Parametreler

ThreadTraits
CRTThreadTraits veya Win32ThreadTraits gibi iş parçacığı oluşturma işlevini sağlayan sınıf.

Üyeler

Korumalı Yapılar

Veri Akışı Adı Açıklama
WorkerClientEntry

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CWorkerThread::CWorkerThread Çalışan iş parçacığı için oluşturucu.
CWorkerThread::~CWorkerThread Çalışan iş parçacığı için yıkıcı.

Genel Yöntemler

Veri Akışı Adı Açıklama
CWorkerThread::AddHandle Çalışan iş parçacığı tarafından tutulan listeye beklenebilir bir nesnenin tanıtıcısını eklemek için bu yöntemi çağırın.
CWorkerThread::AddTimer Çalışan iş parçacığı tarafından tutulan listeye düzenli olarak beklenebilir bir zamanlayıcı eklemek için bu yöntemi çağırın.
CWorkerThread::GetThreadHandle Çalışan iş parçacığının iş parçacığı tanıtıcısını almak için bu yöntemi çağırın.
CWorkerThread::GetThreadId Çalışan iş parçacığının iş parçacığı kimliğini almak için bu yöntemi çağırın.
CWorkerThread::Initialize Çalışan iş parçacığını başlatmak için bu yöntemi çağırın.
CWorkerThread::RemoveHandle Bir tanıtıcıyı beklenebilir nesneler listesinden kaldırmak için bu yöntemi çağırın.
CWorkerThread::Shutdown Çalışan iş parçacığını kapatmak için bu yöntemi çağırın.

Açıklamalar

CWorkerThread kullanmak için

  1. Bu sınıfın bir örneğini oluşturun.

  2. CWorkerThread::Initialize öğesini çağır.

  3. CWorkerThread::AddHandle öğesini bir çekirdek nesnesinin tutamacı ve IWorkerThreadClient uygulamasının işaretçisiyle çağırın.

    - veya -

    IWorkerThreadClient uygulamasının işaretçisiyle CWorkerThread::AddTimer'ı çağırın.

  4. Tanıtıcı veya zamanlayıcı sinyalli olduğunda bazı eylemler gerçekleştirmek için IWorkerThreadClient::Execute uygulayın.

  5. Bir nesneyi beklenebilir nesneler listesinden kaldırmak için CWorkerThread::RemoveHandle'ı çağırın.

  6. İş parçacığını sonlandırmak için CWorkerThread::Shutdown öğesini çağırın.

Gereksinimler

Üst bilgi: atlutil.h

CWorkerThread::AddHandle

Çalışan iş parçacığı tarafından tutulan listeye beklenebilir bir nesnenin tanıtıcısını eklemek için bu yöntemi çağırın.

HRESULT AddHandle(
    HANDLE hObject,
    IWorkerThreadClient* pClient,
    DWORD_PTR dwParam) throw();

Parametreler

hObject
Beklenebilir bir nesnenin tutamacı.

pClient
Tanıtıcı işaretlendiğinde çağrılacak nesnedeki IWorkerThreadClient arabiriminin işaretçisi.

dwParam
Tanıtıcı işaretlendiğinde IWorkerThreadClient::Execute'a geçirilecek parametre.

Dönüş Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Açıklamalar

iWorkerThreadClient::Execute, tanıtıcı olan hObject işaretlendiğinde pClient aracılığıyla çağrılır.

CWorkerThread::AddTimer

Çalışan iş parçacığı tarafından tutulan listeye düzenli olarak beklenebilir bir zamanlayıcı eklemek için bu yöntemi çağırın.

HRESULT AddTimer(
    DWORD dwInterval,
    IWorkerThreadClient* pClient,
    DWORD_PTR dwParam,
    HANDLE* phTimer) throw();

Parametreler

dwInterval
Zamanlayıcının süresini milisaniye cinsinden belirtir.

pClient
Tanıtıcı işaretlendiğinde çağrılacak nesnedeki IWorkerThreadClient arabiriminin işaretçisi.

dwParam
Tanıtıcı işaretlendiğinde IWorkerThreadClient::Execute'a geçirilecek parametre.

phTimer
[out] Başarılı olduğunda yeni oluşturulan süreölçer için tanıtıcıyı alan HANDLE değişkeninin adresi.

Dönüş Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Açıklamalar

Zamanlayıcı işaretlendiğinde IWorkerThreadClient::Execute pClient aracılığıyla çağrılır.

Zamanlayıcıyı kapatmak için zamanlayıcı tutamacını phTimer'dan CWorkerThread::RemoveHandle'a geçirin.

CWorkerThread::CWorkerThread

Oluşturucu.

CWorkerThread() throw();

CWorkerThread::~CWorkerThread

Yok edici.

~CWorkerThread() throw();

Açıklamalar

CWorkerThread::Shutdown'u çağırır.

CWorkerThread::GetThreadHandle

Çalışan iş parçacığının iş parçacığı tanıtıcısını almak için bu yöntemi çağırın.

HANDLE GetThreadHandle() throw();

Dönüş Değeri

Çalışan iş parçacığı başlatılmamışsa iş parçacığı tutamacını veya NULL değerini döndürür.

CWorkerThread::GetThreadId

Çalışan iş parçacığının iş parçacığı kimliğini almak için bu yöntemi çağırın.

DWORD GetThreadId() throw();

Dönüş Değeri

Çalışan iş parçacığı başlatılmamışsa iş parçacığı kimliğini veya NULL değerini döndürür.

CWorkerThread::Initialize

Çalışan iş parçacığını başlatmak için bu yöntemi çağırın.

HRESULT Initialize() throw();

HRESULT Initialize(CWorkerThread<ThreadTraits>* pThread) throw();

Parametreler

pThread
Mevcut bir çalışan iş parçacığı.

Dönüş Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Açıklamalar

Oluşturma işleminden sonra veya CWorkerThread::Shutdown çağrısından sonra nesneyi başlatmak için bu yöntem çağrılmalıdır.

İki veya daha fazla CWorkerThread nesnenin aynı çalışan iş parçacığını kullanmasını sağlamak için, herhangi bir bağımsız değişken geçirmeden bunlardan birini başlatın ve bu nesneye bir işaretçiyi diğerlerinin yöntemlerine Initialize geçirin. İşaretçi kullanılarak başlatılan nesneler, bunları başlatmak için kullanılan nesneden önce kapatılmalıdır.

Mevcut bir nesnenin işaretçisi kullanılarak başlatıldığında bu yöntemin davranışının nasıl değiştiği hakkında bilgi için bkz . CWorkerThread::Shutdown .

CWorkerThread::RemoveHandle

Bir tanıtıcıyı beklenebilir nesneler listesinden kaldırmak için bu yöntemi çağırın.

HRESULT RemoveHandle(HANDLE hObject) throw();

Parametreler

hObject
Kaldırılacak tanıtıcı.

Dönüş Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Açıklamalar

Tanıtıcı kaldırıldığında , AddHandle'a geçirilen ilişkili nesnede IWorkerThreadClient::CloseHandle çağrılır. Bu çağrı başarısız olursa, CWorkerThread tanıtıcıda Windows CloseHandle işlevini çağırır.

CWorkerThread::Shutdown

Çalışan iş parçacığını kapatmak için bu yöntemi çağırın.

HRESULT Shutdown(DWORD dwWait = ATL_WORKER_THREAD_WAIT) throw();

Parametreler

dwWait
Milisaniye cinsinden çalışan iş parçacığının kapatılmasını bekleme süresi. ATL_WORKER_THREAD_WAIT varsayılan olarak 10 saniyedir. Gerekirse, atlutil.h dosyasını eklemeden önce bu simge için kendi değerinizi tanımlayabilirsiniz.

Dönüş Değeri

Başarı durumunda S_OK veya zaman aşımı değeri olan dwWait değerinin aşılması gibi hata hresult döndürür.

Açıklamalar

Nesnesini yeniden kullanmak için bu yöntemi çağırdıktan sonra CWorkerThread::Initialize öğesini çağırın.

Başka CWorkerThread bir nesneye işaretçiyle başlatılan bir nesne üzerinde çağrının Shutdown hiçbir etkisi olmadığını ve her zaman S_OK döndürdüğünü unutmayın.

Ayrıca bkz.

DefaultThreadTraits
Sınıflar
Çoklu İş Parçacığı Kullanımı: Çalışan İş Parçacıkları Oluşturma
IWorkerThreadClient Sınıfı