Rumah > pembangunan bahagian belakang > C++ > Patutkah Saya Membuang Tugasan Kebakaran dan Lupakan dalam TPL?

Patutkah Saya Membuang Tugasan Kebakaran dan Lupakan dalam TPL?

Susan Sarandon
Lepaskan: 2025-01-03 20:35:40
asal
200 orang telah melayarinya

Should I Dispose of Fire-and-Forget Tasks in the TPL?

Tugas Kebakaran-dan-Lupakan dengan Pustaka Selari Tugas: Kebimbangan Pelupusan

Apabila mencetuskan tugasan kebakaran-dan-lupakan dengan Task Parallel Perpustakaan (TPL), pembangun biasanya menghadapi soalan tentang pelupusan objek Tugas dengan betul. Walaupun dokumentasi MSDN menekankan keperluan untuk memanggil Dispose() sebelum mengeluarkan rujukan terakhir, implikasi praktikal daripada tidak berbuat demikian adalah tidak jelas.

Menurut Stephen Toub Microsoft, Pelupusan Tugas wujud terutamanya untuk mengendalikan sumber yang mungkin tidak terurus. digunakan semasa menunggu tugasan selesai. Walau bagaimanapun, dalam senario di mana hanya kesinambungan digunakan (seperti dalam tugasan kebakaran-dan-lupa), pemegang acara ini tidak diperuntukkan.

Dalam catatan blog baru-baru ini, Toub menjelaskan lagi bahawa dalam .Net 4.5, bahagian dalaman pemegang tunggu hanya diperuntukkan apabila secara eksplisit mendapatkan semula sifat IAsyncResult.AsyncWaitHandle. Selain itu, objek Tugas itu sendiri tidak mempunyai pemuktamad; sebaliknya, pemegang dikapsulkan dalam objek dengan pemuktamad. Melainkan pemegangnya diperuntukkan, tiada pemuktamad akan digunakan.

Ringkasan

Berdasarkan cerapan ini:

  • Adakah boleh diterima untuk tidak memanggil Dispose() pada kelas Task dalam ini kes?

Dalam kebanyakan kes, ya, adalah boleh diterima untuk tidak memanggil Dispose(). Penyelesai akan mengendalikan pembersihan.

  • Adakah terdapat sebarang dokumentasi yang membincangkan perkara ini?

Ya, catatan blog Stephen Toub memberikan penjelasan terperinci.

  • Adakah terdapat cara yang sesuai untuk melupuskan objek Tugas yang saya telah terlepas?

Memanggil Dispose() tidak perlu dalam kebanyakan senario.

  • Adakah terdapat cara lain untuk melakukan kebakaran & melupakan tugas dengan TPL ?

Tidak, corak penggunaan Task.Factory.StartNew() ialah pendekatan yang dicadangkan untuk tugasan api-dan-lupa.

Atas ialah kandungan terperinci Patutkah Saya Membuang Tugasan Kebakaran dan Lupakan dalam TPL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan