Articles of Multithreading

Warum ist es nicht empfehlenswert, auf Boolean zu synchronisieren?

Mein Architekt sagt das immer Synchronisieren Sie niemals auf Boolean Ich bin nicht in der Lage den Grund dafür zu verstehen und würde es wirklich schätzen, wenn jemand mit einem Beispiel erklären könnte, warum es keine gute Praxis ist. Referenz Beispielcode private Boolean isOn = false; private String statusMessage = “I’m off”; public void doSomeStuffAndToggleTheThing(){ […]

MVC Progress Bar Threading

Ich verwende ein MVC-Muster für mein Design, wenn ein Benutzer die Suchtaste drückt, rufe ich eine Suche im Modell auf, aber ich möchte auch eine Fortschrittsleiste mit Informationen aktualisieren, die von diesem Modell zurückgegeben werden. Ich habe versucht, einen Swingworker zu verwenden, aber der Fortschrittsbalken wird nicht aktualisiert. Ich vermute, dass ich mit meinem Threading […]

std :: thread pass by reference ruft Kopierkonstruktor auf

Nun, ich habe ein Problem mit der Weitergabe von Daten in einen Thread mit std :: thread. Ich dachte, ich verstehe die allgemeine Semantik von Kopierern usw., aber es scheint, dass ich das Problem nicht ganz verstehe. Ich habe eine einfache class namens Log, die ihren Kopierkonstruktor so versteckt hat: class Log { public: Log(const […]

SwingWorker in Java

Ich habe ein Problem. Ich habe einen JFrame . Es wird einen JDialog erstellen. Wenn die Taste auf JDialog gedrückt wird, sollte sie entsorgt werden und eine E-Mail sollte gesendet werden. Zur selben Zeit brauche ich einen anderen JDialog , der mit der unbestimmten JProgressBar . Wenn eine E-Mail gesendet wird, sollte JDialog entweder entsorgt […]

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); } } […]