Articles of Multithreading

System.Threading.Tasks – Begrenzen Sie die Anzahl gleichzeitiger Aufgaben

Ich habe gerade angefangen, die neue “System.Threading.Tasks” -Güte in .Net 4.0 zu betrachten, und würde gerne wissen, ob es eine eingebaute Unterstützung gibt, um die Anzahl gleichzeitig laufender Aufgaben zu begrenzen, oder wenn dies der Fall ist manuell bearbeitet werden. EG: Wenn ich eine Berechnungsmethode 100-mal aufrufen muss, gibt es eine Möglichkeit, 100 Aufgaben einzurichten, […]

Unterschied zwischen pointers und Referenz als Thread-Parameter

Dies ist das Beispiel: #include #include using namespace std; void f1(double& ret) { ret=5.; } void f2(double* ret) { *ret=5.; } int main() { double ret=0.; thread t1(f1, ret); t1.join(); cout << "ret=" << ret << endl; thread t2(f2, &ret); t2.join(); cout << "ret=" << ret << endl; } Und die Ausgabe ist: ret=0 ret=5 […]

Ist NodeJS wirklich Single-Threaded?

Node.js triggers “Ein Thread pro Verbindungsproblem”, indem er das ereignisbasierte Modell in den Mittelpunkt stellt und eine Ereignisschleife anstelle von Threads verwendet. Alle teuren E / A-Operationen werden immer asynchron mit einem Callback ausgeführt, der ausgeführt wird, wenn die initiierte Operation abgeschlossen ist. Die Beobachtung, wenn irgendeine Operation auftritt, wird durch Multiplex-Mechanismen wie epoll () […]

Wie triggers man die Deklaration “Double-Checked Locking is Broken” in Java?

Ich möchte Lazy-Initialisierung für Multithreading in Java implementieren. Ich habe einen Code der Art: class Foo { private Helper helper = null; public Helper getHelper() { if (helper == null) { Helper h; synchronized(this) { h = helper; if (h == null) synchronized (this) { h = new Helper(); } // release inner synchronization lock […]

Wie bekomme ich ThreadPoolExecutor, um die Threads vor dem Einreihen in die Warteschlange zu erhöhen?

Ich war einige Zeit mit dem Standardverhalten von ThreadPoolExecutor das die ExecutorService – ThreadPoolExecutor unterstützt, die so viele von uns verwenden. Um aus den Javadocs zu zitieren: Wenn mehr als corePoolSize aber weniger als maximumPoolSize-Threads ausgeführt werden, wird nur dann ein neuer Thread erstellt , wenn die Warteschlange voll ist . Dies bedeutet, dass wenn […]

Wiedereintrittssperre in C #

Führt der folgende Code zu einem Deadlock mit C # unter .NET? class MyClass { private object lockObj = new object(); public void Foo() { lock(lockObj) { Bar(); } } public void Bar() { lock(lockObj) { // Do something } } }

Synchronisation des nicht endgültigen Feldes

Bei jeder Synchronisierung in einem nicht endgültigen classnfeld wird eine Warnung angezeigt. Hier ist der Code: public class X { private Object o; public void setO(Object o) { this.o = o; } public void x() { synchronized (o) // synchronization on a non-final field { } } } Also habe ich die Codierung auf folgende […]

Beispiel, das mit HandlerThread kommuniziert

Ich möchte einen HandlerThread aus dem GUI-Thread einrichten. Einige Zeit später, wenn eine Schaltfläche auf der GUI geklickt wird, wird callHello () ausgeführt, die dann eine Nachricht an ein HelloLogger-Objekt sendet, das sich auf dem Nicht-GUI-Thread befindet, der asynchron “Hello World” protokolliert. Ich habe eine Anzahl von Sachen probiert, einige blockieren unbegrenzt, einige empfangen nie […]

Wann sollte eine Parallel.ForEach-Schleife anstelle einer regulären foreach verwendet werden?

Ich bin etwas verwirrt über Parallel.ForEach . Was ist Parallel.ForEach und was genau macht es? Bitte verweisen Sie nicht auf einen MSDN-Link. Hier ist ein einfaches Beispiel: string[] lines = File.ReadAllLines(txtProxyListPath.Text); List list_lines = new List(lines); foreach (string line in list_lines) { //My Stuff } Wie kann ich dieses Beispiel mit Parallel.ForEach umschreiben?

Wie überprüft man, ob ein std :: -Thread noch läuft?

Wie kann ich überprüfen, ob ein std::thread (plattformunabhängig) noch läuft? Es fehlt eine timed_join() Methode und joinable() ist dafür nicht gedacht. Ich dachte daran, einen Mutex mit einem std::lock_guard in den Thread zu std::lock_guard und mithilfe der try_lock() -Methode des Mutex festzustellen, ob er noch gesperrt ist (der Thread läuft), aber es erscheint mir unnötig […]