Gast
#6151892
Hallo, ich möchte mit meinem esp32 mehrere Tasks verwenden.
Um globale Variablen mit beiden Tasks zu verwenden wird in den
Beispielcodes die ich gefunden
habe ein Lock beim Schreiben verwendet. Aber nur beim Schreiben oder?.
Jedoch bin ich mir jetzt nicht sicher was der lesende Task bekommt
während der schreibende gerade im Lock schreibt.
Beispiel:
#pragma pack(1)
union MY_DATA{
u_char data[4];
struct{
u_int val;
};
};
#pragma pack()
MY_DATA my_data = {};
//===========================================================
//Task1 schreibt:
portENTER_CRITICAL(&myMux);
my_data.data[0] = 0xFF;
my_data.data[1] = 0xFF; // <------ Hier liest zB der andere Task
my_data.data[2] = 0xFF;
my_data.data[4] = 0xFF;
portEXIT_CRITICAL(&myMux);
//===========================================================
//Task 2 liest zu markiertem Zeitpunkt....
val = my_data.val;