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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk