acara C#, keselamatan benang, dan mitos salinan preemptive
Pendekatan yang biasa, namun cacat, untuk mengendalikan peristiwa C# dalam senario multithreaded melibatkan membuat salinan perwakilan acara sebelum mengakses dan menembaknya. Manfaat yang sepatutnya menghalang kesilapan apabila pengendali acara dikeluarkan secara serentak. Walau bagaimanapun, amalan ini, yang sering dilabelkan sebagai "pengaturcaraan kultus kargo," sebahagian besarnya tidak berkesan dan juga boleh menutupi keadaan perlumbaan yang serius. NullReferenceException
) menyediakan penyelesaian yang lebih bersih untuk pemeriksaan null. ?.
Walau bagaimanapun, ancaman yang lebih besar adalah keadaan perlumbaan itu sendiri. Walaupun dengan salinan non-null, perwakilan mungkin tidak mencerminkan keadaan yang paling baru-baru ini disebabkan oleh sifat multithreading yang tidak segerak. Eric Lippert menekankan bahawa pengendali peristiwa yang mantap harus berfungsi dengan betul walaupun selepas tidak langganan. Secara membabi buta bergantung pada pemeriksaan null dapat menutupi keadaan perlumbaan ini, yang membawa kepada tingkah laku yang tidak dapat diramalkan.
Atas ialah kandungan terperinci Adakah Menyalin Acara Sebelum Membakar Menghalang Isu Keselamatan Benang dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!