Articles of Multithreading

Warum werden die meisten UI-Frameworks mit einem einzigen Thread versehen?

Zum Beispiel verwenden Java Swing und Android UI beide ein Single-Threaded-Modell, bei dem ein einzelner UI-Thread für die Aktualisierung der gesamten Benutzeroberfläche zuständig ist. Was hat die Framework-Designer dazu gebracht, ein Thread-Modell gegenüber dem anderen zu wählen? Könnte nicht ein Multi-Threading-UI-Modell Ihnen möglicherweise mehr performance bringen, wenn auch auf Kosten höherer Komplexität? Mir ist klar, […]

‘Using’ Aussage vs ‘endlich versuchen’

Ich habe eine Reihe von Eigenschaften, mit denen ich Lese- / Schreibsperren verwenden werde. Ich kann sie entweder mit einem try finally oder einer using Klausel implementieren. Bei dem try finally würde ich try finally das Schloss vor dem try erwerben, und im try freigeben. In der using Klausel würde ich eine class erstellen, die […]

Java hat die Sperrung zweimal überprüft

Ich habe kürzlich einen Artikel über das doppelt überprüfte Sperrmuster in Java und seine Fallstricke gelesen und nun frage ich mich, ob eine Variante dieses Musters, die ich seit Jahren verwende, irgendwelchen Problemen unterliegt. Ich habe viele Beiträge und Artikel zu diesem Thema angeschaut und verstehe die möglichen Probleme mit dem Verweis auf ein teilweise […]

Ist der Zugriff auf eine Variable in C # eine atomare Operation?

Ich bin dazu gebracht worden zu glauben, dass, wenn mehrere Threads auf eine Variable zugreifen können, alle Lesevorgänge von und Schreiben in diese Variable durch einen Synchronisierungscode geschützt sein müssen, wie eine “lock” -statement, weil der processor möglicherweise zu einem anderen Thread in der Mitte wechselt ein schreiben. Ich habe jedoch System.Web.Security.Membership mit Reflector gesucht […]

Verlaufen C # Timer auf einem separaten Thread?

Verläuft ein System.Timers.Timer in einem separaten Thread als der Thread, der ihn erstellt hat? Sagen wir, ich habe eine class mit einem Timer, der alle 5 Sekunden ausgetriggers wird. Wenn der Timer ausgetriggers wird, wird in der verstrichenen Methode ein Objekt geändert. Nehmen wir an, es dauert sehr lange, um dieses Objekt zu modifizieren, zB […]

Gleichzeitige HashSet in .NET Framework?

Ich habe folgende class. class Test{ public HashSet Data = new HashSet(); } Ich muss das Feld “Daten” von verschiedenen Threads ändern, daher möchte ich einige Meinungen über meine aktuelle Thread-sichere Implementierung. class Test{ public HashSet Data = new HashSet(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) Data.Remove(Val); } } […]

Gibt es eine Möglichkeit, einen Thread auf unbestimmte Zeit anzuhalten?

Ich habe in meiner Freizeit an einer Web-Crawling-.NET-App gearbeitet, und eine der functionen dieser App, die ich einfügen wollte, war eine Pause-Schaltfläche, um einen bestimmten Thread anzuhalten. Ich bin relativ neu in Multi-Threading und ich war nicht in der Lage, eine Möglichkeit zu finden, einen Thread auf unbestimmte Zeit anzuhalten, der momentan unterstützt wird. Ich […]

Wie wird eine Aufgabe in C # 4.0 in den Ruhezustand versetzt (oder verzögert)?

Es gibt Task.Delay in .NET 4.5 Wie kann ich dasselbe in .NET 4.0 machen?

Ist es sicher, Swing / AWT-Widgets NICHT im Event-Dispatch-Thread zu erstellen?

Ich habe das Substance- Look-and-Feel in meine Anwendung integriert und bin in verschiedene Probleme bezüglich der internen EDT-Routinen (Event Dispatch Thread) geraten. Die Substanz weigert sich absolut, UI-classn außerhalb des EDT zu konstruieren. Ich habe viel Swing / AWT gemacht und kenne die meisten Regeln bezüglich des EDT. Ich verwende SwingWorker, SwingUtilties.invokeLater, um Komponenten zu […]

Wählen Sie zwischen dem Ausführen des ExecutorService und dem ExecutorService aus

Wie sollte ich zwischen dem Senden oder Ausführen von ExecutorService wählen, wenn der zurückgegebene Wert nicht mein Anliegen ist? Wenn ich beides teste, sehe ich keine Unterschiede zwischen den beiden außer dem zurückgegebenen Wert. ExecutorService threadExecutor = Executors.newSingleThreadExecutor(); threadExecutor.execute(new Task()); ExecutorService threadExecutor = Executors.newSingleThreadExecutor(); threadExecutor.submit(new Task());