Maison > développement back-end > C++ > Comment puis-je créer un générateur de nombres aléatoires Thread-Safe en C# ?

Comment puis-je créer un générateur de nombres aléatoires Thread-Safe en C# ?

Susan Sarandon
Libérer: 2025-01-21 02:42:09
original
451 Les gens l'ont consulté

How Can I Create a Thread-Safe Random Number Generator in C#?

Garantir la sécurité des threads avec le générateur de nombres aléatoires de C#

La méthode Random.Next() intégrée de C# n’est pas thread-safe. Son utilisation dans des applications multithread peut conduire à des résultats incorrects en raison de conditions de concurrence. Heureusement, créer une version thread-safe est simple.

Un générateur de nombres aléatoires thread-safe

La classe ThreadSafeRandom suivante fournit une solution utilisant des variables statiques de thread pour garantir la sécurité des threads. Chaque thread obtient sa propre Random instance indépendante.

<code class="language-csharp">public class ThreadSafeRandom
{
    private static readonly Random _global = new Random();
    [ThreadStatic] private static Random _local;

    public int Next()
    {
        if (_local == null)
        {
            int seed;
            lock (_global)
            {
                seed = _global.Next();
            }
            _local = new Random(seed);
        }

        return _local.Next();
    }
}</code>
Copier après la connexion

Gestion des graines pour des nombres aléatoires uniques

Un problème courant avec plusieurs Random instances est de générer des nombres similaires ou identiques, en particulier lorsqu'elles sont créées en succession rapide. Cette implémentation résout ce problème en utilisant une instance Random globale (_global) pour générer des graines uniques pour chaque instance Random locale du thread (_local). La déclaration lock empêche les conditions de concurrence lors de l'accès au Random global pour la génération de graines.

Cette méthode garantit des graines distinctes pour chaque fil, ce qui donne lieu à des séquences de nombres véritablement aléatoires et indépendantes. Les développeurs peuvent désormais utiliser en toute sécurité la génération de nombres aléatoires dans les applications multithread, évitant ainsi les pièges des approches non thread-safe.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal