Articles of Multithreading

Warum muss das Sperrobjekt statisch sein?

Es ist sehr üblich, ein privates statisches readonly-Objekt zum Sperren von Multi-Threading zu verwenden. Ich verstehe, dass private die Eintrittspunkte zum Sperrobjekt reduziert, indem die Verkapselung und damit der Zugriff auf das Wesentliche verschärft wird. Aber warum statisch? private static readonly object Locker = new object(); Am Ende wird das Feld nur innerhalb meiner class […]

Was macht SynchronizationContext?

In dem Buch Programming C # gibt es einen Beispielcode über SynchronizationContext : SynchronizationContext originalContext = SynchronizationContext.Current; ThreadPool.QueueUserWorkItem(delegate { string text = File.ReadAllText(@”c:\temp\log.txt”); originalContext.Post(delegate { myTextBox.Text = text; }, null); }); Ich bin ein Anfänger in Threads, also antworte bitte ausführlich. Erstens, ich weiß nicht, was Kontext bedeutet, was speichert das Programm im originalContext ? […]

Wann sollte ich einen CompletionService über einen ExecutorService verwenden?

Ich habe CompletionService in diesem Blogpost gefunden . Dies zeigt jedoch nicht die Vorteile von CompletionService gegenüber einem Standard ExecutorService. Der gleiche Code kann mit beiden geschrieben werden. Wann ist ein CompletionService sinnvoll? Kannst du ein kurzes Codebeispiel geben, um es kristallklar zu machen? Beispielsweise zeigt dieses Codebeispiel nur, wo ein CompletionService nicht benötigt wird […]

Monitor vs Sperre

Wann ist es angebracht, entweder die Monitor class oder das Schlüsselwort lock für die Thread-Sicherheit in C # zu verwenden? EDIT: Es scheint von den Antworten bis jetzt, dass lock für eine Reihe von Aufrufen der Monitor class kurze Hand ist. Für was genau ist der Lock Call Short-Hand? Oder expliziter, class LockVsMonitor { private […]

Spawn mehrere Threads für die Arbeit, dann warten bis alles fertig ist

Ich möchte nur einen Hinweis zu “Best Practice” in Bezug auf Multi-Threading-Aufgaben. Als Beispiel haben wir eine C # -Anwendung, die beim Start Daten aus verschiedenen “Typ” -Tabellen in unserer database liest und die Informationen in einer Sammlung speichert, die wir in der Anwendung weitergeben. Dies verhindert, dass wir jedes Mal, wenn diese Informationen benötigt […]

Was ist Mutex und Semaphor in Java? Was ist der Hauptunterschied?

Was ist Mutex und Semaphor in Java? Was ist der Hauptunterschied?

Asynchronous IO in Scala mit Futures

Nehmen wir an, ich bekomme eine (möglicherweise große) Liste von Bildern, die von einigen URLs heruntergeladen werden können. Ich benutze Scala, also was ich tun würde ist: import scala.actors.Futures._ // Retrieve URLs from somewhere val urls: List[String] = … // Download image (blocking operation) val fimages: List[Future[…]] = urls.map (url => future { download url […]

Sie können keinen Cache-Thread-Pool mit einer Größenbeschränkung erstellen?

Es scheint unmöglich zu sein, einen Cache-Thread-Pool mit einer Begrenzung für die Anzahl der Threads zu erstellen, die er erstellen kann. Hier ist, wie statische Executors.newCachedThreadPool in der Standard-Java-Bibliothek implementiert ist: public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue()); } Verwenden Sie diese Vorlage also, um einen Cache-Thread-Pool fester Größe […]

Unterschied zwischen WAIT- und BLOCKED-Thread-Zuständen

Was ist der Unterschied zwischen Threadstatus WAIT und Threadstatus BLOCKED? Die Thread.State-Dokumentation : verstopft Ein Thread, der blockiert ist und auf eine Monitorsperre wartet, befindet sich in diesem Status. Warten Ein Thread, der unbegrenzt auf einen anderen Thread wartet, um eine bestimmte Aktion auszuführen, befindet sich in diesem Status erklärt mir den Unterschied nicht.

Kann ich geschachtelte Eigenschaften in einem Arbeitsgang mit Json.net zu meiner class serialisieren?

Sagen wir, ich habe ein Modell wie: public class MyModel { public string Name { get; set; } public string[] Size { get; set; } public string Weight { get; set; } } Und Json gefällt mir: { “name” : “widget”, “details” : { “size” : [ “XL”,”M”,”S”, ] “weight” : “heavy” } } Ich […]