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 SetProxy
baş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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin