Jump to content

Threadbehandlung bei Red Brick


Recommended Posts

Habe hier ein kleines Problem mit einem C Programm. Läuft unter x86 wunderbar, aber es macht auf dem RED ein Problem.

 

In einem seperaten Thread habe ich ein Ausgabeprogramm, welches über eine Struktur Daten für ein paar 20x4 LCD ausgeben soll. Die Daten sind global in einer Includedatei definiert.

 

Die Struktur ist simpel und sieht so aus:

 

struct OutLCD {

char z[4][21];

uint8_t virtuell; // Für NCURSES Emulation

uint8_t aktiv; // Ist der Puffer, die LCD aktiv

uint8_t OLCDNr; // auf welche Anzeigennr.

uint8_t dauer; // 0 = permanenten Anzeige  > 0 wechsel nach  X sekunden

Device lcd;

WINDOW *LCD;

} OLCD[20]; 

 

Um eine Anzeige auch auf dem Bildschirm darstellen zu können, habe ich auch eine virtuelle LCD Anzeige mit ncurses ( dafür der *LCD Eintrag, für die echten LCDs die Device lcd.

 

Für die Ausgabe gibt es jetzt den Merker virtuell. Und da beginnt mein Problem. Auf dem x86 bleibt der Wert (=1) auch im Thread erhalten, auf dem RED ist der Wert 0, obwohl er eindeutig zugewiesen wurde, allerdings vor dem Thread.

 

Werden globale Variablen da anders behandelt? Oder wo liegt da mein Fehler?

 

 

 

 

 

 

Link to comment
Share on other sites

Ich würde da auf eine Race Condition tippen. Der RED Brick hat nur einen Kern, daher laufen dein Haupt-Thread im Programm und deine Extra-Thread niemals parallel. Dein PC hat sicherlich mehr als einen Kern, daher werde die beiden Threads sich zeitlich anders verhalten.

 

Sprich, dass es auf einem PC funktioniert ist reines Glück, bedingt dadurch wie dein PC die Threads ausführt. Auf dem RED Brick werden die Threads zeitlich anders ausgeführt und dadurch kommt dann ein Bug in deinem Programm zutage den du auf deinem PC nicht gesehen hast.

 

Vielleicht zeigt du dein Programm mal vor, dann können wir vielleicht sehen wo das Problem steckt.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...