Bagikan melalui


Praktik terbaik untuk menggunakan kumpulan utas

Topik ini menjelaskan praktik terbaik untuk bekerja dengan kumpulan utas.

Boleh

  • Gunakan kumpulan utas untuk melakukan pekerjaan paralel di aplikasi Anda.

  • Gunakan item kerja untuk menyelesaikan tugas yang diperluas tanpa memblokir utas UI.

  • Buat item kerja yang berumur pendek dan independen. Item kerja berjalan secara asinkron dan dapat dikirimkan ke kumpulan dalam urutan apa pun dari antrean.

  • Pengiriman pembaruan ke utas UI dengan Windows.UI.Core.CoreDispatcher.

  • Gunakan ThreadPoolTimer.CreateTimer alih-alih fungsi Tidur .

  • Gunakan kumpulan utas alih-alih membuat sistem manajemen utas Anda sendiri. Kumpulan utas berjalan di tingkat OS dengan kemampuan tingkat lanjut dan dioptimalkan untuk menskalakan secara dinamis sesuai dengan sumber daya dan aktivitas perangkat dalam proses dan di seluruh sistem.

  • Di C++, pastikan bahwa delegasi item kerja menggunakan model utas tangkas (delegasi C++ gesit secara default).

  • Gunakan item kerja yang telah dialokasikan sebelumnya saat Anda tidak dapat mentolerir kegagalan alokasi sumber daya pada saat penggunaan.

Tidak boleh

  • Jangan membuat timer berkala dengan 1 milidetik (termasuk 0). Ini akan menyebabkan item kerja bertingkah sebagai timer bidikan tunggal.

  • Jangan mengirimkan item kerja berkala yang membutuhkan waktu lebih lama untuk diselesaikan daripada jumlah waktu yang Anda tentukan dalam parameter periode .

  • Jangan mencoba mengirim pembaruan UI (selain roti panggang dan pemberitahuan) dari item kerja yang dikirim dari tugas latar belakang. Sebagai gantinya, gunakan progres tugas latar belakang dan handler penyelesaian - misalnya, IBackgroundTaskInstance.Progress.

  • Saat Anda menggunakan handler item kerja yang menggunakan kata kunci asinkron , jangan asumsikan bahwa semua kode dalam handler telah dijalankan ketika status lengkap telah diatur pada item kerja. Item kerja kumpulan alur dapat diatur ke status lengkap sebelum semua kode dalam handler telah dijalankan. Kode setelah kata kunci tunggu dalam handler dapat dijalankan setelah item kerja diatur ke status lengkap.

  • Jangan mencoba menjalankan item kerja yang telah dialokasikan sebelumnya lebih dari sekali tanpa menginisialisasinya kembali. Membuat item kerja berkala