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 .

Baca juga

Namespace layanan konkurensi
Struktur IScheduler
Struktur IThreadProxy