Struktur IExecutionContext
Antarmuka ke konteks eksekusi yang dapat berjalan pada prosesor virtual tertentu dan secara kooperatif dialihkan konteksnya.
Sintaks
struct IExecutionContext;
Anggota
Metode Publik
Nama | Deskripsi |
---|---|
IExecutionContext::D ispatch | Metode yang dipanggil ketika proksi utas mulai menjalankan konteks eksekusi tertentu. Ini harus menjadi rutinitas pekerja utama untuk penjadwal Anda. |
IExecutionContext::GetId | Mengembalikan pengidentifikasi unik untuk konteks eksekusi. |
IExecutionContext::GetProxy | Mengembalikan antarmuka ke proksi utas yang menjalankan konteks ini. |
IExecutionContext::GetScheduler | Mengembalikan antarmuka ke penjadwal tempat konteks eksekusi ini berada. |
IExecutionContext::SetProxy | Mengaitkan proksi utas dengan konteks eksekusi ini. Proksi utas terkait memanggil metode ini tepat sebelum mulai menjalankan metode konteks Dispatch . |
Keterangan
Jika Anda menerapkan penjadwal kustom yang berinteraksi dengan Resource Manager Concurrency Runtime, Anda harus mengimplementasikan IExecutionContext
antarmuka. Utas yang dibuat oleh Resource Manager melakukan pekerjaan atas nama penjadwal Anda dengan menjalankan IExecutionContext::Dispatch
metode .
Hierarki Warisan
IExecutionContext
Persyaratan
Header: concrtrm.h
Namespace: konkurensi
Metode IExecutionContext::D ispatch
Metode yang dipanggil ketika proksi utas mulai menjalankan konteks eksekusi tertentu. Ini harus menjadi rutinitas pekerja utama untuk penjadwal Anda.
virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;
Parameter
pDispatchState
Penunjuk ke status di mana konteks eksekusi ini sedang dikirim. Untuk informasi selengkapnya tentang status pengiriman, lihat DispatchState.
Metode IExecutionContext::GetId
Mengembalikan pengidentifikasi unik untuk konteks eksekusi.
virtual unsigned int GetId() const = 0;
Tampilkan Nilai
Pengidentifikasi bilangan bulat yang unik.
Keterangan
Anda harus menggunakan metode GetExecutionContextId
untuk mendapatkan pengidentifikasi unik untuk objek yang mengimplementasikan IExecutionContext
antarmuka, sebelum Anda menggunakan antarmuka sebagai parameter ke metode yang disediakan oleh Resource Manager. Anda diharapkan untuk mengembalikan pengidentifikasi yang sama ketika GetId
fungsi dipanggil.
Pengidentifikasi yang diperoleh dari sumber yang berbeda dapat mengakibatkan perilaku yang tidak ditentukan.
Metode IExecutionContext::GetProxy
Mengembalikan antarmuka ke proksi utas yang menjalankan konteks ini.
virtual IThreadProxy* GetProxy() = 0;
Tampilkan Nilai
Antarmuka IThreadProxy
. Jika proksi utas konteks eksekusi belum diinisialisasi dengan panggilan ke SetProxy
, fungsi harus mengembalikan NULL
.
Keterangan
Resource Manager akan memanggil SetProxy
metode pada konteks eksekusi, dengan IThreadProxy
antarmuka sebagai parameter, sebelum memasukkan Dispatch
metode pada konteks. Anda diharapkan untuk menyimpan argumen ini dan mengembalikannya pada panggilan ke GetProxy()
.
Metode IExecutionContext::GetScheduler
Mengembalikan antarmuka ke penjadwal tempat konteks eksekusi ini berada.
virtual IScheduler* GetScheduler() = 0;
Tampilkan Nilai
Antarmuka IScheduler
.
Keterangan
Anda diharuskan untuk menginisialisasi konteks eksekusi dengan antarmuka yang valid IScheduler
sebelum Anda menggunakannya sebagai parameter untuk metode yang disediakan oleh Resource Manager.
Metode IExecutionContext::SetProxy
Mengaitkan proksi utas dengan konteks eksekusi ini. Proksi utas terkait memanggil metode ini tepat sebelum mulai menjalankan metode konteks Dispatch
.
virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;
Parameter
pThreadProxy
Antarmuka ke proksi utas yang akan memasuki Dispatch
metode pada konteks eksekusi ini.
Keterangan
Anda diharapkan untuk menyimpan parameter pThreadProxy
dan mengembalikannya pada panggilan ke GetProxy
metode . Resource Manager menjamin bahwa proksi utas yang terkait dengan konteks eksekusi tidak akan berubah saat proksi utas menjalankan Dispatch
metode .
Lihat juga
Namespace layanan konkurensi
Struktur IScheduler
Struktur IThreadProxy