Articles of Multithreading

Drucken von Even und Odd mit zwei Threads in Java

Ich habe den folgenden Code ausprobiert. Ich habe diesen Code von einem anderen Beitrag genommen, der laut Autor korrekt ist. Aber wenn ich versuche zu laufen, gibt es mir nicht das genaue Ergebnis. Dies dient hauptsächlich dazu, gerade und ungerade Werte nacheinander zu drucken. public class PrintEvenOddTester { public static void main(String … args){ Printer […]

Flüchtige Variable in Java

Ich lese also dieses Buch mit dem Titel Java Concurrency in Practice, und ich stecke auf dieser einen Erklärung fest, die ich ohne ein Beispiel nicht zu verstehen scheinen mag. Das ist das Zitat: Wenn Thread A in eine flüchtige Variable schreibt und anschließend Thread B dieselbe Variable liest, werden die Werte aller Variablen, die […]

Wie kann man OpenCV-Video in Qt effizient anzeigen?

Ich erfasse mehrere Streams von IP-Kameras mit Hilfe von OpenCV. Wenn ich versuche, diesen Stream aus einem OpenCV-Fenster ( cv::namedWindow(…) ) cv::namedWindow(…) , funktioniert es ohne Probleme (ich habe bisher bis zu 4 Streams ausprobiert). Das Problem tritt auf, wenn ich versuche, diese Streams in einem Qt-Widget anzuzeigen. Da die Erfassung in einem anderen Thread […]

Wie man einen Thread in Java schnell und sauber abbricht?

Hier ist mein Problem: Ich habe einen Dialog mit einigen Parametern, die der Benutzer ändern kann (zB über einen Spinner). Jedes Mal, wenn einer dieser Parameter geändert wird, starte ich einen Thread, um eine 3D-Ansicht entsprechend dem neuen Parameterwert zu aktualisieren. Wenn der Benutzer einen anderen Wert ändert (oder den gleichen Wert erneut, indem er […]

Gibt es eine function “Block bis Bedingung wird wahr” in Java?

Ich schreibe einen Listener-Thread für einen Server, und im Moment verwende ich: while (true){ try { if (condition){ //do something condition=false; } sleep(1000); } catch (InterruptedException ex){ Logger.getLogger(server.class.getName()).log(Level.SEVERE, null, ex); } } Mit dem Code oben, renne ich in Probleme mit der run-function essen alle CPU-Zeit Schleifen. Die Schlaffunktion funktioniert, aber es scheint eine provisorische […]

C #: Was passiert, wenn eine statische Methode von mehreren Threads aufgerufen wird?

In meiner Anwendung habe ich eine statische Methode, die von mehreren Threads gleichzeitig aufgerufen wird. Besteht die Gefahr, dass meine Daten durcheinander geraten? In meinem ersten Versuch war die Methode nicht statisch und ich habe mehrere Instanzen der class erstellt. In diesem Fall sind meine Daten irgendwie durcheinander geraten. Ich bin mir nicht sicher, wie […]

Ist EndInvoke () optional, optional oder definitiv nicht optional?

Ich habe widersprüchliche Meinungen darüber gelesen, ob jedem BeginInvoke () ein EndInvoke () zugeordnet werden muss. Gibt es Lecks oder andere Probleme mit dem Aufruf von EndInvoke ()?

Warum brauchen wir Thread.MemoryBarrier ()?

In “C # 4 in a Nutshell” zeigt der Autor, dass diese class manchmal ohne MemoryBarrier 0 schreiben kann, obwohl ich in meinem Core2Duo nicht reproduzieren kann: public class Foo { int _answer; bool _complete; public void A() { _answer = 123; //Thread.MemoryBarrier(); // Barrier 1 _complete = true; //Thread.MemoryBarrier(); // Barrier 2 } public […]

Wie erhält man den JNI-Schnittstellenzeiger (JNIEnv *) für asynchrone Aufrufe?

Ich habe gelernt, dass der JNI-Schnittstellenzeiger (JNIEnv *) nur im aktuellen Thread gültig ist. Angenommen, ich habe einen neuen Thread in einer nativen Methode gestartet. Wie kann es Ereignisse asynchron an eine Java-Methode senden? Da dieser neue Thread keine Referenz von (JNIEnv *) haben kann. Speichern einer globalen Variable für (JNIEnv *) wird offenbar nicht […]

Was bedeutet thread_local in C ++ 11?

Ich bin verwirrt mit der Beschreibung von thread_local in C ++ 11. Mein Verständnis ist, jeder Thread hat eine eindeutige Kopie von lokalen Variablen in einer function. Auf die globalen / statischen Variablen kann von allen Threads zugegriffen werden (möglicherweise synchronisierter Zugriff unter Verwendung von Sperren). Und die Variablen thread_local sind für alle Threads sichtbar, […]