C # Incident et sécurité de thread: explorez le mode de vérification de copie controversé
Le problème de sécurité du fil de l'événement C # a toujours attiré beaucoup d'attention, car la configuration de l'événement peut devenir nul dans le court laps de temps entre la vérification de la valeur vide et déclencher l'événement. Cela a conduit à toujours créer une copie de l'incident avant de vérifier la valeur vide et de déclencher l'événement.
Bien que cette technologie résout des problèmes spécifiques de la référence anormale de l'air, il ne résout pas les conditions de concurrence potentielles qui permettent à la configuration de permettre aux événements d'être chargés de devenir nuls. En tant que Jon Skeet, un expert JIT, CLR n'optimisera pas les étapes de réplication.
En cas de déclencheur, un autre thread peut annuler l'événement d'abonnement, résultant en des processus d'exécution incohérents. Ce comportement est particulièrement problématique lors de l'annulation du thread de l'abonnement pour empêcher l'appel des événements de traitement des procédures.
S'appuyant sur le mode de vérification de la réplication dans l'événement pour s'assurer que la sécurité des threads a été critiquée comme une «programmation culte de fret» (programmation superstitieuse), ce n'est qu'une copie d'une pratique sans comprendre pleinement son objectif ou ses limites. Il couvre les conditions de concurrence potentielles et donne un sentiment de fausse sécurité.
.NET Framework n'a pas fourni de solution directe pour atténuer ce problème, mais certaines technologies peuvent concevoir des composants de sécurité de threads. Ces technologies incluent l'ID de thread de stockage dans le constructeur pour détecter les interférences externes, ou pour implémenter un mécanisme de synchronisation explicite dans la méthode d'accès des événements.
En tant que méthode alternative pour la copie et la vérification des habitudes, la distribution de la configuration de l'air à la déclaration de l'événement peut éliminer la demande de valeurs vacantes. Cependant, il ne peut pas résoudre le problème des conditions concurrentielles.
En fin de compte, la fourniture de la sécurité des threads dans le code axé sur l'événement nécessite une méthode complète. Il ne suffit pas de copier le mode de vérification, et il doit être utilisé avec prudence dans des environnements multi-thread.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!