Articles of Multithreading

Wie wird CountDownLatch in Java Multithreading verwendet?

Kann mir jemand helfen zu verstehen, was Java CountDownLatch ist und wann es zu benutzen ist? Ich habe keine klare Vorstellung davon, wie dieses Programm funktioniert. Wie ich weiß, beginnen alle drei Threads gleichzeitig und jeder Thread ruft CountDownLatch nach 3000ms auf. Also Countdown wird eins nach dem anderen dekrementieren. Nachdem der Signalspeicher auf Null […]

Warum sollte man eine ReentrantLock verwenden, wenn man synchronisierte (this) benutzen kann?

Ich versuche zu verstehen, was die Sperre in Nebenläufigkeit so wichtig macht, wenn man synchronized (this) . Im Dummy-Code unten kann ich entweder: synchronisierte die gesamte Methode oder synchronisierte den anfälligen Bereich (synchronisierte (this) {…}) ODER sperren Sie den anfälligen Codebereich mit einer ReentrantLock. Code: private final ReentrantLock lock = new ReentrantLock(); private static List […]

Ist das Iterieren von ConcurrentHashMap-Werten threadsicher?

In javadoc für ConcurrentHashMap ist Folgendes: Wiederherstellungsoperationen (einschließlich get) werden im Allgemeinen nicht blockiert und können sich daher mit Aktualisierungsoperationen (einschließlich Put und Remove) überschneiden. Retrievals spiegeln die Ergebnisse der zuletzt abgeschlossenen Aktualisierungsoperationen wider, die an ihrem Beginn anhalten. Für Aggregatoperationen wie putAll und clear können gleichzeitige Abrufvorgänge das Einfügen oder Entfernen von nur einigen […]

Wenn Threads dieselbe PID verwenden, wie können sie identifiziert werden?

Ich habe eine Abfrage im Zusammenhang mit der Implementierung von Threads in Linux. Linux hat keine explizite Thread-Unterstützung. Im Benutzerbereich können wir eine Thread-Bibliothek (wie NPTL) zum Erstellen von Threads verwenden. Jetzt, wenn wir NPTL verwenden, unterstützt es 1: 1-Mapping. Der coreel verwendet die function clone() , um Threads zu implementieren. Angenommen, ich habe 4 […]

Sind C # -Arrays threadsicher?

Bestimmtes Erstellen Sie eine function, um ein Array und einen Index als Parameter zu verwenden. Erstellen Sie ein Element-Array. Erstellen Sie eine Zählschleife. Innerhalb der Schleife eines neuen Threads weisen Sie dem Array mit dem übergebenen Indexer eine neue Instanz des Objekts zu. Ich weiß, wie man die Threads usw. verwaltet. Ich bin daran interessiert […]

System.Windows.Threading.Dispatcher und WinForms?

functioniert ein System.Windows.Threading.Dispatcher auf dem UI-Thread einer WinForms Anwendung? Wenn ja, warum? Es kommt von WindowsBase.dll, die eine WPF Komponente zu sein scheint. Wenn nicht, wie kann ich Arbeitseinheiten wieder auf den UI-Thread aufrufen? Ich habe Control.BeginInvoke() , aber es scheint plump, ein Steuerelement zu erstellen, das nur auf den ursprünglichen Thread verweist.

Warum wird der Destruktor einer Zukunft von `std :: async` blockiert?

Beim Versuch, eine andere Stackoverflow-Frage zu beantworten, erkannte ich, dass dieses einfache C ++ 11-Snippet den aufrufenden Thread implizit blockiert: std::async(std::launch::async, run_async_task) Für mich wäre das der kanonische C ++ 11 Weg gewesen, eine Aufgabe asynchron zu starten, ohne sich um das Ergebnis zu kümmern. Stattdessen muss man explizit einen Thread erstellen und lösen (siehe […]

Haben Sie eine Reihe von Aufgaben mit nur X auf einmal ausgeführt

Nehmen wir an, ich habe 100 Aufgaben, die etwas tun, was 10 Sekunden dauert. Jetzt möchte ich nur 10 auf einmal laufen lassen, wie wenn eine dieser 10 endet, wird eine andere Aufgabe ausgeführt, bis alle fertig sind. Jetzt habe ich immer ThreadPool.QueueUserWorkItem() für eine solche Aufgabe verwendet, aber ich habe gelesen, dass es eine […]

Wie kann man einen Thread in C # sofort beenden?

Ich verwende die thread.Abort Methode, um den Thread zu thread.Abort , aber es funktioniert nicht. Gibt es eine andere Möglichkeit, den Thread zu beenden? private void button1_Click(object sender, EventArgs e) { if (Receiver.IsAlive == true) { MessageBox.Show(“Alive”); Receiver.Abort(); } else { MessageBox.Show(“Dead”); Receiver.Start(); } } Ich benutze dies, aber jedes Mal, wenn ich den Status […]

Crossthread-Operation nicht gültig … – VB.NET

Ich benutze vb.net, und in meinem Programm erhalte ich den Fehler “Crossthread-Operation nicht gültig”, wenn ich meinen Hintergrundarbeiter starte, der dieses Textfeld aktiviert. Mein Haupt-Sub wird zuerst die Aktivierung zu false machen, und wenn der Hintergrundarbeiter läuft, wird es wieder auf True und dann auf Exit gesetzt. Warum gibt es mir einen Fehler? Zu Ihrer […]