Heim > Backend-Entwicklung > C++ > Wie kann ich in C# einen Thread-sicheren Zufallszahlengenerator erstellen?

Wie kann ich in C# einen Thread-sicheren Zufallszahlengenerator erstellen?

Susan Sarandon
Freigeben: 2025-01-21 02:42:09
Original
405 Leute haben es durchsucht

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

Gewährleistung der Thread-Sicherheit mit dem Zufallszahlengenerator von C#

Die in C# integrierte Random.Next()-Methode ist nicht threadsicher. Die Verwendung in Multithread-Anwendungen kann aufgrund von Rennbedingungen zu falschen Ergebnissen führen. Glücklicherweise ist das Erstellen einer Thread-sicheren Version unkompliziert.

Ein Thread-sicherer Zufallszahlengenerator

Die folgende ThreadSafeRandom-Klasse bietet eine Lösung, die Thread-statische Variablen verwendet, um Thread-Sicherheit zu gewährleisten. Jeder Thread erhält seine eigene unabhängige Random Instanz.

<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>
Nach dem Login kopieren

Seed-Management für eindeutige Zufallszahlen

Ein häufiges Problem bei mehreren Random Instanzen ist die Generierung ähnlicher oder identischer Zahlen, insbesondere wenn sie schnell hintereinander erstellt werden. Diese Implementierung behebt dieses Problem, indem eine globale Random-Instanz (_global) verwendet wird, um eindeutige Seeds für jede Thread-lokale Random-Instanz (_local) zu generieren. Die lock-Anweisung verhindert Race Conditions beim Zugriff auf das globale Random für die Seed-Generierung.

Diese Methode gewährleistet unterschiedliche Startwerte für jeden Thread, was zu wirklich zufälligen und unabhängigen Zahlenfolgen führt. Entwickler können die Zufallszahlengenerierung jetzt sicher in Multithread-Anwendungen verwenden und so die Fallstricke nicht-threadsicherer Ansätze vermeiden.

Das obige ist der detaillierte Inhalt vonWie kann ich in C# einen Thread-sicheren Zufallszahlengenerator erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage