Guten Tag,
ich habe hier einen thread, der die globale Var cWrite
auswertet & in die globale Var cEmpfangen schreibt. mit
while(1) schleife
Beides klappt, doch wenn ich cEmpfangen in einer anderen
Funktion(andere Klasse) auslese, bekomme ich immer einen Blank
zurück. habe die Var beide mit „extern char cWrite, cEmpfang;“
deklariert. :eek:
Zuerst einmal musst du dich darum kümmern, dass der Zugriff auf die Varibale synchronisiert wird. Wenn zwei Threads unkontrolliert lesend und schreibend auf die Variable zugreifen, kann es schon einmal solche Ergebnisse geben. cEmpfang darf erst dann gelesen werden, wenn ein gültiges Datum darin steht. Eine Semaphore scheint mir ein passendes Mittel zum Synchronisieren. Schau mal in deine Plattform-Doku.
Desweiteren solltest du in jedem Fall das Schlüsselwort „volatile“ in die Definition eingehen lassen:
extern volatile char cWrite;
Damit weisst du den Compiler an, in jedem Fall aus der Variablen zu lesen. Andernfalls erlaubst du ihm den Speicherzugriff wegzuoptimieren, u.a. könnte auch das eine Erklärung für dein Blank sein. Du musst bedenken, C/C++ kennt keine Threads!
Gruß Markus