Ohne RTOS implementierst du eine Barrier mit atomaren Operationen oder Interrupt-Sperren zum Schutz kritischer Abschnitte. Beispiel:
#define NUM_THREADS 4
volatile int barrier_counter = 0;
volatile bool barrier_release = false;
void barrier_wait(void) {
__disable_irq(); // Kritischer Abschnitt
barrier_counter++;
if (barrier_counter == NUM_THREADS) {
barrier_release = true;
}
__enable_irq();
while (!barrier_release) {
// busy-wait, ggf. sleep/low-power
}
}
Dies ist jedoch nicht skalierbar für Systeme mit niedriger Energie oder hohen Echtzeitanforderungen. In Bare-Metal-Umgebungen empfiehlt sich oft ein Ersatz durch Event-Flags, Polling oder gezielte Message-Passing-Techniken.