Hari ini saya memerah otak untuk melaksanakan pengurusan tugasan menggunakan konteks. Kod di sini.
Seperti semua perkara lain dalam projek ini, ini adalah satu lagi "tugas" kandungan Profesor Maziero.
Sistem pengurusan tugas telah dilaksanakan menggunakan konteks sistem. Ia menguruskan tugas koperasi dengan melaksanakan satu tugas sehingga secara jelas berpindah ke tugas lain.
task_t Struktur: Mewakili tugasan, menyimpan konteks pelaksanaan, pengecam (ID) dan penunjuk untuk memudahkan pembinaan baris gilir tugasan berganda.
typedef struct task_t { struct task_t *prev, *next; // ponteiros para usar em filas int id; // identificador da tarefa ucontext_t context; // contexto armazenado da tarefa short status; // pronta, rodando, suspensa, ... // ... (outros campos serão adicionados mais tarde) } task_t;
Inisialisasi: Fungsi ppos_init() dipanggil untuk mengkonfigurasi konteks utama program. Ini menyediakan sistem untuk mengurus pelbagai tugas.
Penciptaan tugas: Tugas baharu dicipta dengan task_init(), di mana anda menghantar fungsi dan hujah untuk dilaksanakan dalam tugas baharu. Tugasan ini diberikan konteks dan tindanan baharu dan ID tugasan dikemas kini.
Penukaran konteks: Fungsi task_switch() membenarkan anda bertukar antara tugas, menukar konteks semasa dengan tugas yang ditentukan.
Penamatan tugas: Tugas boleh menamatkan pelaksanaannya dan kembali ke konteks utama dengan task_exit().
Atas ialah kandungan terperinci Hari - Pengurusan Tugas (Sistem Pengendalian). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!