LinkedList an Thread übergeben

Für allgemeine Fragen zur Programmierung mit PureBasic.
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

LinkedList an Thread übergeben

Beitrag von Sven »

Ich habe eine LinkedList, in die ich vom Hauptprogramm aus unregelmäßig Werte schreibe. Die Liste soll von einem Thread in zyklischen Zeitabständen abgefragt werden, enthaltene Werte sollen verarbeitet und die verarbeiteten Werte aus der Liste gelöscht werden. Also Zugriff auf die LinkedList von Hauptprogramm und Thread.

Nun gibt es immer wieder Warnungen zur "Threadunsicherheit". Wie kann ich die Übergabe an den Thread sicher machen? Hat sowas schon jemand realisiert, gibt es dazu Ideen?

Sven
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Linked Lists an Threads übergeben ist ne blöde idee ;). Ist zwar möglich aber sinnlos. In PB sind Linked Lists immer global. Selbst wenn du sie in Proceduren definieren solltest.
Bild
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Ob Global oder nicht, es kann doch durchaus der Fall sein, dass man mehrere LinkedListss hat und davon immer eine übergeben will. Möglich wären beide, aber man übergibt eben abhängig von bestimmten Ereignissen nur eine. Dann muss man diese als Parameter übergeben damit die Prozedur da dynamisch sich die jeweilige LinkedList nimmt. Also auch bei Globalen Sachen keine "blöde Idee".
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

dann halt so:

Code: Alles auswählen

!mov [v_LLhWnd], e_Test
kopiert in v_LLhWnd den Handle von der LL Test
Bild
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Die Überschrift ist ein bischen irreführend.
Es geht hier doch nicht um das übergeben einer LinkedList, sondern um die Threadsicherheit beim Schreibzugriff (Es sollen ja Elemente gelöscht werden)
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

@Bluejoke

Richtig erkannt. Tschuldigung, wenn die Überschrift verwirrend ist. Mit Übergeben ist wirklich nicht das Übergeben in einem Prozedurkopf gemeint, sondern ein Protokoll, Handling..., wie ich die Anforderung "Daten schreiben im Hauptprogramm, Daten lesen und löschen in Thread" sicherstellen kann.

Wäre das zum Beispiel eine Möglichkeit:

Thread anhalten
aktuelle Pos (ListIndex oder @liste) merken
Pos an Ende setzen
neue Daten an Ende zufügen
Pos auf Merker setzen (SelectElement oder direkt @liste)
Thread fortführen

Klingt das plausibel? Hab ich was vergessen?

Sven
Antworten