Rumah >pembangunan bahagian belakang >C++ >Mengapa Niaga Hadapan std::async Mempunyai Pemusnah Menyekat?

Mengapa Niaga Hadapan std::async Mempunyai Pemusnah Menyekat?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 11:12:13320semak imbas

Why Do std::async Futures Have Blocking Destructors?

Mengapa Blok: Sebab Disebalik Penyekatan Pemusnah Niaga Hadapan Dipulangkan oleh std::async

Apabila bekerja dengan tugas tak segerak, pemusnah masa depan yang dikembalikan oleh std::async terkenal kerana kelakuan menyekatnya, menimbulkan persoalan tentangnya keperluan. Untuk menyelidiki pilihan reka bentuk ini, mari kita terokai kebimbangan dan perbincangan yang membawa kepada pelaksanaannya.

Kertas Herb Sutter, "async, ~future, dan ~thread," menyerlahkan pertimbangan keselamatan yang berkaitan dengan penghalang pemusnah. Tanpa tingkah laku ini, benang "lari" yang dikaitkan dengan masa depan boleh terus dilaksanakan selepas keadaan yang berkaitan telah dimusnahkan. Kekurangan kawalan ke atas penyiapan tugas ini berpotensi membawa kepada kerosakan memori atau isu lain yang tidak dijangka.

Kertas Hans Boehm, "Pemusnah masa depan Async() mesti menunggu," memberikan contoh konkrit tentang kebimbangan ini. Tanpa menyekat pemusnah, pengendalian pengecualian atau peristiwa luaran boleh mengganggu aliran pelaksanaan tugas yang dijangkakan. Seperti yang dinyatakan oleh Boehm, ini boleh mewujudkan kerentanan keselamatan di mana penyerang boleh memanipulasi masa pengecualian untuk mengeksploitasi kelalaian dalam pengawal skop, yang membawa kepada penindasan tindanan dan rampasan proses.

Pemusnah penyekat berfungsi sebagai perlindungan terhadap potensi bahaya ini, menghalang utas yang berkaitan daripada meneruskan pelaksanaan selepas masa depan dimusnahkan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa tingkah laku ini khusus untuk niaga hadapan yang dikembalikan oleh std::async dengan dasar pelancaran tak segerak. Niaga hadapan lain, seperti yang dikembalikan oleh std::promise atau niaga hadapan daripada algoritma selari, tidak mempamerkan gelagat penyekatan yang sama dalam pemusnahnya.

Walaupun kebimbangan keselamatan ditimbulkan, pemusnah penyekat std::async niaga hadapan telah menjadi topik perdebatan berterusan dalam jawatankuasa penyeragaman C. Perubahan yang dicadangkan untuk menghentikan tingkah laku menyekat atau menjadikannya tidak standard untuk niaga hadapan async belum diterima.

Ringkasnya, pemusnah penyekat niaga hadapan yang dikembalikan oleh std::async ialah pilihan reka bentuk kontroversi yang didorong oleh kebimbangan keselamatan . Walaupun ia menghalang potensi isu yang berkaitan dengan pelaksanaan benang yang tidak terkawal, ia juga memperkenalkan keperluan untuk pengurusan jelas kitaran hayat benang dan pengawal skop untuk memastikan pembersihan yang betul.

Atas ialah kandungan terperinci Mengapa Niaga Hadapan std::async Mempunyai Pemusnah Menyekat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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