1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Threadsichere Queue bei Zugriff aus 2 Threads

  • Volker83
  • 11. November 2009 um 14:08
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Volker83
    Punkte
    50
    Beiträge
    7
    • 11. November 2009 um 14:08
    • #1

    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?

  • spinball
    Punkte
    1.192
    Beiträge
    223
    • 11. November 2009 um 14:30
    • #2
    Zitat

    LocVar

    davon ist abzuraten

    Zitat

    Synchronized-Methode

    mach das

    Code
    thread-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
         }
    }
    Alles anzeigen

    Zum Lesen: http://www.complang.tuwien.ac.at/franz/objektor…t09-1seitig.pdf Kapitel "Nebenläufige Programmierung" ab Seite 142.

  • Volker83
    Punkte
    50
    Beiträge
    7
    • 11. November 2009 um 14:59
    • #3

    Danke für den schnellen Rat, das Script finde ich auch super.

  • tobias
    Punkte
    688
    Beiträge
    136
    • 11. November 2009 um 15:04
    • #4

    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.

  • Volker83
    Punkte
    50
    Beiträge
    7
    • 11. November 2009 um 15:49
    • #5

    Es geht um C# und es ist die Queue.Synchronized-Methode gemeint. Bei der ich mir nicht ganz sicher bin was sie eigentlich macht.

  • tdanecker
    Punkte
    74
    Beiträge
    12
    • 11. November 2009 um 20:08
    • #6

    Queue.Synchronized macht einfach um alle Methoden-Aufrufe ein lock.
    Ich würd's aber eher selber machen...

    Code
    lock (queue)
    {
      queue.Dequeue/Enqueue();
    }
  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum