Aracılığıyla paylaş


IExecutionResource Yapısı

Donanım iş parçacığı için soyutlama.

Sözdizimi

struct IExecutionResource;

Üyeler

Genel Yöntemler

Ad Tanım
IExecutionResource::CurrentSubscriptionLevel Şu anda bu yürütme kaynağının temsil ettiği temel donanım iş parçacığıyla ilişkili etkinleştirilmiş sanal işlemci köklerinin ve abone olunan dış iş parçacıklarının sayısını döndürür.
IExecutionResource::GetExecutionResourceId Bu yürütme kaynağının temsil ettiği donanım iş parçacığı için benzersiz bir tanımlayıcı döndürür.
IExecutionResource::GetNodeId Bu yürütme kaynağının ait olduğu işlemci düğümü için benzersiz bir tanımlayıcı döndürür.
IExecutionResource::Remove Bu yürütme kaynağını Resource Manager'a döndürür.

Açıklamalar

Yürütme kaynakları tek başına veya sanal işlemci kökleriyle ilişkilendirilebilir. Uygulamanızdaki bir iş parçacığı iş parçacığı aboneliği oluşturduğunda tek başına yürütme kaynağı oluşturulur. ISchedulerProxy::SubscribeThread ve ISchedulerProxy::RequestInitialVirtualProcessors yöntemleri iş parçacığı abonelikleri oluşturur ve aboneliği temsil eden bir IExecutionResource arabirim döndürür. İş parçacığı aboneliği oluşturmak, Resource Manager'ın zamanlayıcıya atamış olduğu sanal işlemci kökleri ile birlikte belirli bir iş parçacığının bir zamanlayıcıya kuyruğa alınan işe katılacağını Resource Manager'a bildirmenin bir yoludur. Resource Manager, donanım iş parçacıklarının mümkün olduğunca fazla abone olmasını önlemek için bu bilgileri kullanır.

Devralma Hiyerarşisi

IExecutionResource

Gereksinimler

Üst bilgi: concrtrm.h

Ad alanı: eşzamanlılık

IExecutionResource::CurrentSubscriptionLevel Yöntemi

Şu anda bu yürütme kaynağının temsil ettiği temel donanım iş parçacığıyla ilişkili etkinleştirilmiş sanal işlemci köklerinin ve abone olunan dış iş parçacıklarının sayısını döndürür.

virtual unsigned int CurrentSubscriptionLevel() const = 0;

İade Değeri

Geçerli abonelik düzeyi.

Açıklamalar

Abonelik düzeyi, donanım iş parçacığıyla ilişkili çalışan iş parçacığı sayısını bildirir. Bu yalnızca Resource Manager'ın abone olunan iş parçacıkları biçiminde farkında olduğu iş parçacıklarını ve iş parçacığı proxy'lerini etkin bir şekilde yürüten sanal işlemci köklerini içerir.

ISchedulerProxy::SubscribeCurrentThread yöntemini veya parametresi doSubscribeCurrentThread değere true ayarlanmış ISchedulerProxy::RequestInitialVirtualProcessors yöntemini çağırmak, donanım iş parçacığının abonelik düzeyini bir artırır. Ayrıca aboneliği temsil eden bir IExecutionResource arabirim döndürür. IExecutionResource::Remove öğesine karşılık gelen bir çağrı, donanım iş parçacığının abonelik düzeyini bire bir kaldırır.

IVirtualProcessorRoot::Activate yöntemini kullanarak bir sanal işlemci kökünü etkinleştirme eylemi, bir donanım iş parçacığının abonelik düzeyini bir artırır. IVirtualProcessorRoot::D eactivate veya IExecutionResource::Remove yöntemleri, etkinleştirilmiş bir sanal işlemci kökünde çağrıldığında abonelik düzeyini bir kez azaltmayı kaldırır.

Resource Manager, kaynakların zamanlayıcılar arasında ne zaman taşındığını belirleme yollarından biri olarak abonelik düzeyi bilgilerini kullanır.

IExecutionResource::GetExecutionResourceId Yöntemi

Bu yürütme kaynağının temsil ettiği donanım iş parçacığı için benzersiz bir tanımlayıcı döndürür.

virtual unsigned int GetExecutionResourceId() const = 0;

İade Değeri

Bu yürütme kaynağını temel alan donanım iş parçacığı için benzersiz bir tanımlayıcı.

Açıklamalar

Her donanım iş parçacığına Eşzamanlılık Çalışma Zamanı tarafından benzersiz bir tanımlayıcı atanır. Birden çok yürütme kaynağı ilişkili donanım iş parçacığıysa, hepsinin yürütme kaynağı tanımlayıcısı aynı olur.

IExecutionResource::GetNodeId Yöntemi

Bu yürütme kaynağının ait olduğu işlemci düğümü için benzersiz bir tanımlayıcı döndürür.

virtual unsigned int GetNodeId() const = 0;

İade Değeri

İşlemci düğümü için benzersiz tanımlayıcı.

Açıklamalar

Eşzamanlılık Çalışma Zamanı, sistemdeki donanım iş parçacıklarını işlemci düğümleri grupları halinde temsil eder. Düğümler genellikle sistemin donanım topolojisinden türetilir. Örneğin, belirli bir yuvadaki veya belirli bir NUMA düğümündeki tüm işlemciler aynı işlemci düğümüne ait olabilir. Resource Manager, ile başlayan 0 ve dahil olan nodeCount - 1bu düğümlere benzersiz tanımlayıcılar atar; burada nodeCount sistemdeki toplam işlemci düğümü sayısını temsil eder.

Düğüm sayısı GetProcessorNodeCount işlevinden alınabilir.

IExecutionResource::Remove Yöntemi

Bu yürütme kaynağını Resource Manager'a döndürür.

virtual void Remove(_Inout_ IScheduler* pScheduler) = 0;

Parametreler

pScheduler
Bu yürütme kaynağını kaldırma isteğinde bulunan zamanlayıcı arabirimi.

Açıklamalar

Tek başına yürütme kaynaklarının yanı sıra sanal işlemci kökleriyle ilişkili yürütme kaynaklarını Resource Manager'a döndürmek için bu yöntemi kullanın.

Bu, ISchedulerProxy::SubscribeCurrentThread veya ISchedulerProxy::RequestInitialVirtualProcessors yöntemlerinden birinden aldığınız tek başına bir yürütme kaynağıysa, yöntemi Remove çağırmak kaynağın temsil etmek için oluşturulduğu iş parçacığı aboneliğini sona erdirir. Zamanlayıcı ara sunucusunu kapatmadan önce tüm iş parçacığı aboneliklerini sonlandırmanız ve aboneliği oluşturan iş parçacığından aramanız Remove gerekir.

Arabirim arabirimden devraldığından sanal işlemci kökleri de yöntemi çağrılarak Remove Resource Manager'a IVirtualProcessorRootIExecutionResource döndürülebilir. IScheduler::RemoveVirtualProcessors yöntemine yapılan bir çağrıya yanıt olarak veya ISchedulerProxy::CreateOversubscriber yönteminden aldığınız fazla abonelikli bir sanal işlemci köküyle işiniz bittiğinde bir sanal işlemci kökü döndürmeniz gerekebilir. Sanal işlemci kökleri için, iş parçacığının Remove yöntemini çağırabileceği hiçbir kısıtlama yoktur.

invalid_argument parametresi pScheduler olarak ayarlanırsa NULLoluşturulur.

invalid_operation parametresi pScheduler , bu yürütme kaynağının oluşturulduğu zamanlayıcıdan farklıysa veya geçerli iş parçacığı iş parçacığı aboneliğini oluşturan iş parçacığından farklıysa tek başına yürütme kaynağıyla oluşturulur.

Ayrıca bkz.

Eşzamanlılık Ad Alanı
IVirtualProcessorRoot Yapısı