Articles of Multithreading

Problem mit mehreren springenden Kugeln

Ich habe ein Programm erstellt, das mehrere springende Bälle mit zufälliger Farbe, Geschwindigkeit und Radius macht. Wenn der Benutzer auf den Bildschirm klickt, sollte ein neuer zufälliger Ball erscheinen und sich um den Bildschirm bewegen. Aber ich habe ein Multithread-Problem. Wenn ich auf den Bildschirm klicke, erscheint ein Ball und bewegt sich überhaupt nicht. Wenn […]

Was für den Datenaustausch zwischen Threads wird auf einem Core mit HT ausgeführt?

Hyper-Threading- Technologie ist eine Form der simultanen Multithreading-Technologie, die von Intel eingeführt wurde. Diese Ressourcen umfassen die Ausführungsmaschine, die Caches und die Systembusschnittstelle; Durch die gemeinsame Nutzung von Ressourcen können zwei logische processoren effizienter zusammenarbeiten, und ein blockierter logischer processor kann Ressourcen von dem anderen processor ausborgen. In der Intel-CPU mit Hyper-Threading kann ein CPU-Core […]

Wie verwende ich Java Executor richtig?

Ich habe Java-Executoren in meinen Multithreading-Apps verwendet, aber ich kann nicht herausfinden, wann ich die folgenden Methoden am besten nutzen kann: 1. ExecutorService executor=Executors.newFixedThreadPool(50); executor.execute(new A_Runner(… some parameter …)); executor.shutdown(); while (!executor.isTerminated()) { Thread.sleep(100); } 2. int Page_Count=200; ExecutorService executor=Executors.newFixedThreadPool(50); doneSignal=new CountDownLatch(Page_Count); for (int i=0;i<Page_Count;i++) executor.execute(new A_Runner(doneSignal, … some parameter …)); doneSignal.await(); executor.shutdown(); while (!executor.isTerminated()) […]

Eine ausstehende Aufgabe wird synchron auf dem UI-Thread abgebrochen

Manchmal, wenn ich die Stornierung einer ausstehenden Aufgabe mit CancellationTokenSource.Cancel angefordert habe, muss ich sicherstellen, dass die Aufgabe den abgebrochenen Status erreicht hat , bevor ich fortfahren kann. Meistens bin ich mit dieser Situation konfrontiert, wenn die App beendet wird und ich alle ausstehenden Aufgaben ordnungsgemäß abbrechen möchte. Es kann jedoch auch eine Anforderung der […]

Was ist ein Thread-Exit-Code?

Was genau ist ein Thread-Exit-Code im Ausgabefenster während des Debuggens? Welche Informationen gibt es mir? Ist es irgendwie nützlich oder nur ein interner Kram, der mich nicht stören sollte? The thread 0x552c has exited with code 259 (0x103). The thread 0x4440 has exited with code 0 (0x0). Gibt es vielleicht eine Art Liste möglicher Exit-Codes […]

Was ist der Unterschied zwischen einer synchronisierten Methode und einem synchronisierten Block in Java?

Was ist der Unterschied zwischen einer synchronisierten Methode und einem synchronisierten Block in Java? Ich habe die Antwort im Netz gesucht, die Leute scheinen sich so unsicher zu sein 🙁 Mein Take wäre, dass es keinen Unterschied zwischen den beiden gibt, außer dass der Synchronisationsblock mehr im scope lokalisiert ist und daher die Sperre von […]

Wie man die CPU-Nutzung pro Thread auf Windows (Win32) erhalten

Suchen nach Win32-API-functionen, C ++ – oder Delphi-Beispielcode, der die CPU-Auslastung (Prozent und / oder Gesamt-CPU-Zeit) eines Threads angibt (nicht die Summe für einen process). Ich habe die Thread-ID. Ich weiß, dass Sysinternals Process Explorer diese Informationen anzeigen kann, aber ich brauche diese Informationen in meinem Programm.

C #: Warten auf den Abschluss aller Threads

In dem Code, den ich gerade schreibe, stoße ich auf ein gemeinsames Muster, bei dem ich darauf warten muss, dass alle Threads in einer Gruppe abgeschlossen werden, mit einem Timeout. Das Zeitlimit soll die Zeit sein, die für die Fertigstellung aller Threads benötigt wird. Daher kann thread.Join (timeout) für jeden Thread einfach nicht ausgeführt werden, […]

AsyncTask.executeOnExecutor () vor API Level 11

Die normale Art, wie wir AsyncTask in Android machen, ist von Android API: private class DoIntenseTask extends AsyncTask { protected Void doInBackground(Object… params) { for (Object param : params) { Object rtnObj = doIntenseJob(param); publishProgress(rtnObj); } return null; } protected void onProgressUpdate(Object… progress) { for (Object rtnObj : progress) { updateActivityUI(rtnObj); } } } Meine […]

Wie würden Sie Ihre eigene Lese- / Schreibsperre in C ++ 11 implementieren?

Ich habe eine Reihe von Datenstrukturen, die ich mit einem Reader / Writer-Lock schützen muss. Ich kenne boost :: shared_lock, aber ich hätte gerne eine benutzerdefinierte Implementierung mit std :: mutex, std :: condition_variable und / oder std :: atomic, so dass ich besser verstehen kann, wie es funktioniert (und zwinge es später) . Jede […]