Struktur IExecutionResource

Abstraksi untuk utas perangkat keras.

Sintaks

struct IExecutionResource;

Anggota

Metode Publik

Nama Deskripsi
IExecutionResource::CurrentSubscriptionLevel Mengembalikan jumlah akar prosesor virtual yang diaktifkan dan utas eksternal berlangganan yang saat ini terkait dengan utas perangkat keras yang mendasar yang diwakili sumber daya eksekusi ini.
IExecutionResource::GetExecutionResourceId Mengembalikan pengidentifikasi unik untuk utas perangkat keras yang diwakili sumber daya eksekusi ini.
IExecutionResource::GetNodeId Mengembalikan pengidentifikasi unik untuk simpul prosesor tempat sumber daya eksekusi ini berada.
IExecutionResource::Remove Mengembalikan sumber daya eksekusi ini ke Resource Manager.

Keterangan

Sumber daya eksekusi dapat mandiri atau terkait dengan akar prosesor virtual. Sumber daya eksekusi mandiri dibuat saat utas di aplikasi Anda membuat langganan utas. Metode ISchedulerProxy::SubscribeThread dan ISchedulerProxy::RequestInitialVirtualProcessors membuat langganan utas, dan mengembalikan antarmuka yang IExecutionResource mewakili langganan. Membuat langganan utas adalah cara untuk memberi tahu Resource Manager bahwa utas tertentu akan berpartisipasi dalam pekerjaan yang diantrekan ke penjadwal, bersama dengan akar prosesor virtual yang ditetapkan Resource Manager ke penjadwal. Resource Manager menggunakan informasi untuk menghindari oversubscribing utas perangkat keras di mana ia bisa.

Hierarki Warisan

IExecutionResource

Persyaratan

Header: concrtrm.h

Namespace: konkurensi

IExecutionResource::CurrentSubscriptionLevel Method

Mengembalikan jumlah akar prosesor virtual yang diaktifkan dan utas eksternal berlangganan yang saat ini terkait dengan utas perangkat keras yang mendasar yang diwakili sumber daya eksekusi ini.

virtual unsigned int CurrentSubscriptionLevel() const = 0;

Tampilkan Nilai

Tingkat langganan saat ini.

Keterangan

Tingkat langganan memberi tahu Anda berapa banyak utas yang berjalan yang terkait dengan utas perangkat keras. Ini hanya mencakup utas yang diketahui Resource Manager dalam bentuk utas berlangganan, dan akar prosesor virtual yang secara aktif menjalankan proksi utas.

Memanggil metode ISchedulerProxy::SubscribeCurrentThread, atau metode ISchedulerProxy::RequestInitialVirtualProcessors dengan parameter doSubscribeCurrentThread yang diatur ke nilai true meningkatkan tingkat langganan utas perangkat keras satu per satu. Mereka juga mengembalikan antarmuka yang IExecutionResource mewakili langganan. Panggilan yang sesuai ke IExecutionResource::Hapus penurunan tingkat langganan utas perangkat keras satu per satu.

Tindakan mengaktifkan akar prosesor virtual menggunakan metode IVirtualProcessorRoot::Aktifkan kenaikan tingkat langganan utas perangkat keras satu per satu. Metode IVirtualProcessorRoot::D eactivate, atau IExecutionResource::Hapus pengurangan tingkat langganan satu per satu saat dipanggil pada akar prosesor virtual yang diaktifkan.

Resource Manager menggunakan informasi tingkat langganan sebagai salah satu cara untuk menentukan kapan harus memindahkan sumber daya antar penjadwal.

IExecutionResource::GetExecutionResourceId Method

Mengembalikan pengidentifikasi unik untuk utas perangkat keras yang diwakili sumber daya eksekusi ini.

virtual unsigned int GetExecutionResourceId() const = 0;

Tampilkan Nilai

Pengidentifikasi unik untuk utas perangkat keras yang mendasar sumber daya eksekusi ini.

Keterangan

Setiap utas perangkat keras diberi pengidentifikasi unik oleh Concurrency Runtime. Jika beberapa sumber daya eksekusi terkait dengan utas perangkat keras, semuanya akan memiliki pengidentifikasi sumber daya eksekusi yang sama.

Metode IExecutionResource::GetNodeId

Mengembalikan pengidentifikasi unik untuk simpul prosesor tempat sumber daya eksekusi ini berada.

virtual unsigned int GetNodeId() const = 0;

Tampilkan Nilai

Pengidentifikasi unik untuk simpul prosesor.

Keterangan

Runtime Konkurensi mewakili utas perangkat keras pada sistem dalam grup simpul prosesor. Node biasanya berasal dari topologi perangkat keras sistem. Misalnya, semua prosesor pada soket tertentu atau node NUMA tertentu mungkin termasuk dalam simpul prosesor yang sama. Resource Manager menetapkan pengidentifikasi unik untuk simpul ini yang dimulai dengan 0 hingga dan termasuk nodeCount - 1, di mana nodeCount mewakili jumlah total simpul prosesor pada sistem.

Jumlah simpul dapat diperoleh dari fungsi GetProcessorNodeCount.

IExecutionResource::Hapus Metode

Mengembalikan sumber daya eksekusi ini ke Resource Manager.

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

Parameter

pScheduler
Antarmuka ke penjadwal yang membuat permintaan untuk menghapus sumber daya eksekusi ini.

Keterangan

Gunakan metode ini untuk mengembalikan sumber daya eksekusi mandiri serta sumber daya eksekusi yang terkait dengan akar prosesor virtual ke Resource Manager.

Jika ini adalah sumber daya eksekusi mandiri yang Anda terima dari salah satu metode ISchedulerProxy::SubscribeCurrentThread atau ISchedulerProxy::RequestInitialVirtualProcessors, memanggil metode Remove akan mengakhiri langganan utas yang dibuat sumber daya untuk diwakili. Anda diharuskan mengakhiri semua langganan utas sebelum mematikan proksi penjadwal, dan harus memanggil Remove dari utas yang membuat langganan.

Akar prosesor virtual juga dapat dikembalikan ke Resource Manager dengan memanggil Remove metode , karena antarmuka IVirtualProcessorRoot mewarisi dari IExecutionResource antarmuka. Anda mungkin perlu mengembalikan akar prosesor virtual baik sebagai respons terhadap panggilan ke metode IScheduler::RemoveVirtualProcessors , atau ketika Anda selesai dengan akar prosesor virtual oversubscribed yang Anda peroleh dari metode ISchedulerProxy::CreateOversubscriber . Untuk akar prosesor virtual, tidak ada batasan di mana utas dapat memanggil Remove metode .

invalid_argument dilemparkan jika parameter pScheduler diatur ke NULL.

invalid_operation dilemparkan jika parameter pScheduler berbeda dari penjadwal tempat sumber daya eksekusi ini dibuat, atau, dengan sumber daya eksekusi mandiri, jika utas saat ini berbeda dari utas yang membuat langganan utas.

Baca juga

Namespace layanan konkurensi
Struktur IVirtualProcessorRoot