Hallo
ich schreibe gerade eine Bibliothek die Images bekommt sie weiterverarbeitet und wieder zurück gibt.
Die Images sollen vom aufrufenden Programm in einer BMP-Queue gelegt werden, von da wird die Bibliotheks-Komponente die Images wieder herraus nehmen um sie zu bearbeiten. Das rausnehmen und reinlegen in die Queue wird in 2 seperaten Threads getan. D.h. zur selben Zeit in der etwas rausgenommen wird kann es sein, dass der andere Thread auf die Queue zugreift und etwas reinlegen will.
Wie mache ich die Queue Threadsicher? Ich habe gelesen dass man den Zugriff während einer Zeit durch eine LocVar blockieren kann, oder mit Hilfe der Synchronized-Methode einer anderen Queue organiseren kann. Wo ist der Unterschied und welche der Lösungen ist zu empfehlen?
Threadsichere Queue bei Zugriff aus 2 Threads
-
-
Zitat
LocVar
davon ist abzuraten
ZitatSynchronized-Methode
mach das
Code
Alles anzeigenthread-sichere bmp-queue pseudo-code { synchronisierte liste von bildern; synchrones entnehmen () { // liste für andere threads sperren // entnehmen // liste wieder freigeben } synchrones einfügen (bmp bild) { // liste für andere threads sperren // einfügen // liste wieder freigeben } }
Zum Lesen: http://www.complang.tuwien.ac.at/franz/objektor…t09-1seitig.pdf Kapitel "Nebenläufige Programmierung" ab Seite 142.
-
Danke für den schnellen Rat, das Script finde ich auch super.
-
Geht es hier jetzt um C# oder Java (bzw. ist mit synchronized-Methode das SynchronizationAttribute gemeint)?
Für C# ist noch http://www.albahari.com/threading/part2.aspx hilfreich. -
Es geht um C# und es ist die Queue.Synchronized-Methode gemeint. Bei der ich mir nicht ganz sicher bin was sie eigentlich macht.
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!