Articles of Multithreading

Führen Sie mehrere UI-Threads aus

Springe zum Ende der Frage. Das ist nur ein paar zusätzliche Informationen Ich benutze eine Komponente (GeckoFX), um einige Webseiten zu rendern, gut, aber es kann nur in einem Windows-Formular verwendet werden; da es an ein WinForms-Objekt gebunden werden muss, das gezeichnet werden kann. Da alle WinForms im selben Thread laufen, kann ich immer nur […]

Verwendet Interlocked.CompareExchange eine Speicherbarriere?

Ich lese gerade Joe Duffys Beitrag über flüchtige Lese- und Schreibvorgänge und Aktualität , und ich versuche, etwas über das letzte Codebeispiel in dem Beitrag zu verstehen: while (Interlocked.CompareExchange(ref m_state, 1, 0) != 0) ; m_state = 0; while (Interlocked.CompareExchange(ref m_state, 1, 0) != 0) ; m_state = 0; … Wird bei der Ausführung der […]

Parallelisieren von GDI + Image Resizing .net

Ich habe versucht, die Größenänderung von JPEGs mit .Net zu parallelisieren. Alle meine Versuche sind fehlgeschlagen, weil die Graphics.DrawImage-function sich zu sperren scheint, während sie aktiv ist. Probieren Sie Folgendes aus: Sub Main() Dim files As String() = IO.Directory.GetFiles(“D:\TEMP”) Dim imgs(25) As Image For i As Integer = 0 To 25 imgs(i) = Image.FromFile(files(i)) Next […]

Erwerben / Freigeben von Semantiken mit nicht temporären Speichern auf x64

Ich habe etwas wie: if (f = acquire_load() == ) { … use Foo } und: auto f = new Foo(); release_store(f) Sie können sich leicht eine Implementierung von acquire_load und release_store vorstellen, die atomic mit load (memory_order_acquire) und store (memory_order_release) verwendet. Aber was ist nun, wenn release_store mit _mm_stream_si64 implementiert wird, einem nicht-temporalen Schreibvorgang, […]

Warum hat diese einfache .NET-Konsolenanwendung so viele Threads?

Dieses einfache Programm beginnt mit 15 Threads – entsprechend der Anzahl. Manchmal während seines Lebens fallen einige, aber sie kommen zurück. class Program { static void Main(string[] args) { while (true) { Console.WriteLine(Process.GetCurrentProcess().Threads.Count); Thread.Sleep(500); } } } Ich hatte erwartet, dass der process nur einen Thread hat (und meine Intuition wurde dadurch unterstützt) Ohne den […]

Multithread-Rendering auf OpenGL

Ich habe eine Multithread-Anwendung, in der ich versuche, mit verschiedenen Threads zu rendern. Zuerst versuchte ich, den gleichen Rendering-Kontext zwischen allen Threads zu verwenden, aber ich bekam NULL aktuelle Kontexte für andere Threads. Ich habe im Internet gelesen, dass ein Kontext nur jeweils zu einem Thread aktuell sein kann. Also habe ich beschlossen, etwas anderes […]

Warum brauche ich eine Speicherbarriere?

C # 4 in Kurzform (sehr empfehlenswert übrigens) verwendet den folgenden Code, um das Konzept von MemoryBarrier zu demonstrieren (vorausgesetzt, A und B wurden auf verschiedenen Threads ausgeführt): class Foo{ int _answer; bool complete; void A(){ _answer = 123; Thread.MemoryBarrier(); // Barrier 1 _complete = true; Thread.MemoryBarrier(); // Barrier 2 } void B(){ Thread.MemoryBarrier(); // […]

Aktualisieren der GUI (WPF) mit einem anderen Thread

Habe einfach ein Problem hier, dass ich keine Ahnung habe, wie ich das beheben kann. Ich mache ein kleines Projekt mit einer GUI und seriellen Daten. Die GUI wird vom Hauptthread ausgeführt und da die Datenvariablen, die meine eingehenden seriellen Daten enthalten, kontinuierlich aktualisiert werden müssen, werden diese in einem zweiten Thread aktualisiert. Das Problem […]

Threading ignoriert KeyboardInterrupt-Ausnahme

Ich benutze diesen einfachen Code: import threading, time class reqthread ( threading.Thread ): def __init__ (self): threading.Thread.__init__(self) def run ( self ): for i in range(0,10): time.sleep(1) print ‘.’ try: thread=reqthread() thread.start() except (KeyboardInterrupt, SystemExit): print ‘\n! Received keyboard interrupt, quitting threads.\n’ Aber wenn ich es starte, druckt es $ python prova.py ` . . […]

Töte den Thread in der Pthread-Bibliothek

Ich benutze pthread_create(&thread1, &attrs, //… , //…); und brauchen, wenn eine Bedingung aufgetreten ist, diesen Thread zu töten, wie man das tötet?