Aracılığıyla paylaş


IExecutionContext Yapısı

Belirli bir sanal işlemci üzerinde çalışabilen ve ortak bir şekilde bağlam değiştirilebilen bir yürütme bağlamı arabirimi.

Sözdizimi

struct IExecutionContext;

Üyeler

Genel Yöntemler

Ad Tanım
IExecutionContext::D ispatch bir iş parçacığı ara sunucusu belirli bir yürütme bağlamını yürütmeye başladığında çağrılan yöntem. Bu, zamanlayıcınız için ana çalışan yordamı olmalıdır.
IExecutionContext::GetId Yürütme bağlamı için benzersiz bir tanımlayıcı döndürür.
IExecutionContext::GetProxy Bu bağlamı yürüten iş parçacığı ara sunucusuna bir arabirim döndürür.
IExecutionContext::GetScheduler Bu yürütme bağlamının ait olduğu zamanlayıcıya bir arabirim döndürür.
IExecutionContext::SetProxy Bir iş parçacığı ara sunucusunu bu yürütme bağlamıyla ilişkilendirir. İlişkili iş parçacığı ara sunucusu, bağlamın Dispatch yöntemini yürütmeye başlamadan hemen önce bu yöntemi çağırır.

Açıklamalar

Eşzamanlılık Çalışma Zamanı'nın Resource Manager'ı ile arabirim oluşturan özel bir zamanlayıcı uyguluyorsanız, arabirimini IExecutionContext uygulamanız gerekir. Resource Manager tarafından oluşturulan iş parçacıkları, yöntemini yürüterek IExecutionContext::Dispatch zamanlayıcınız adına iş gerçekleştirir.

Devralma Hiyerarşisi

IExecutionContext

Gereksinimler

Üst bilgi: concrtrm.h

Ad alanı: eşzamanlılık

IExecutionContext::D ispatch Yöntemi

bir iş parçacığı ara sunucusu belirli bir yürütme bağlamını yürütmeye başladığında çağrılan yöntem. Bu, zamanlayıcınız için ana çalışan yordamı olmalıdır.

virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;

Parametreler

pDispatchState
Bu yürütme bağlamın gönderildiği duruma ilişkin bir işaretçi. Gönderim durumu hakkında daha fazla bilgi için bkz . DispatchState.

IExecutionContext::GetId Yöntemi

Yürütme bağlamı için benzersiz bir tanımlayıcı döndürür.

virtual unsigned int GetId() const = 0;

İade Değeri

Benzersiz bir tamsayı tanımlayıcısı.

Açıklamalar

Arabirimi Resource Manager tarafından sağlanan yöntemlere parametre olarak kullanmadan önce arabirimi uygulayan IExecutionContext nesne için benzersiz bir tanımlayıcı elde etmek için yöntemini GetExecutionContextId kullanmanız gerekir. İşlev çağrıldığında aynı tanımlayıcıyı döndürmeniz GetId beklenir.

Farklı bir kaynaktan alınan bir tanımlayıcı tanımsız davranışa neden olabilir.

IExecutionContext::GetProxy Yöntemi

Bu bağlamı yürüten iş parçacığı ara sunucusuna bir arabirim döndürür.

virtual IThreadProxy* GetProxy() = 0;

İade Değeri

Bir IThreadProxy arabirim. Yürütme bağlamı iş parçacığı ara sunucusu çağrısıyla SetProxybaşlatılmadıysa, işlevi döndürmelidir NULL.

Açıklamalar

Resource Manager, yöntemini bağlama girmeden Dispatch önce parametre olarak bir IThreadProxy arabirimle bir yürütme bağlamında çağırırSetProxy. Bu bağımsız değişkeni depolamanız ve çağrısında döndürmeniz beklenir GetProxy().

IExecutionContext::GetScheduler Yöntemi

Bu yürütme bağlamının ait olduğu zamanlayıcıya bir arabirim döndürür.

virtual IScheduler* GetScheduler() = 0;

İade Değeri

Bir IScheduler arabirim.

Açıklamalar

Resource Manager tarafından sağlanan yöntemlere parametre olarak kullanmadan önce yürütme bağlamını geçerli IScheduler bir arabirimle başlatmanız gerekir.

IExecutionContext::SetProxy Yöntemi

Bir iş parçacığı ara sunucusunu bu yürütme bağlamıyla ilişkilendirir. İlişkili iş parçacığı ara sunucusu, bağlamın Dispatch yöntemini yürütmeye başlamadan hemen önce bu yöntemi çağırır.

virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;

Parametreler

pThreadProxy
Bu yürütme bağlamında yöntemini girmek Dispatch üzere olan iş parçacığı ara sunucusu arabirimi.

Açıklamalar

parametresini pThreadProxy kaydetmeniz ve yöntemine yapılan bir çağrıda döndürmeniz beklenir GetProxy . Resource Manager, iş parçacığı ara sunucusu yöntemini yürütürken yürütme bağlamıyla ilişkili iş parçacığı ara sunucusunun değişmeyeceğini garanti eder Dispatch .

Ayrıca bkz.

Eşzamanlılık Ad Alanı
IScheduler Yapısı
IThreadProxy Yapısı