feat: implement lock-free command queue and atomic state for thread safety

Co-authored-by: aider (deepseek/deepseek-coder) <aider@aider.chat>
This commit is contained in:
Loic Coenen
2026-05-01 14:52:53 +00:00
parent 563380df66
commit 7b23c75dd1
6 changed files with 293 additions and 63 deletions

View File

@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <stdatomic.h>
#include "engine.h"
// Test helper
@@ -15,6 +16,18 @@ static Engine *create_test_engine(void) {
engine->quantize_threshold = 0;
engine->queued_triggers = NULL;
// Initialize command queue
command_queue_init(&engine->command_queue);
// Initialize atomic state mirrors
atomic_store(&engine->transport_rolling, 0);
atomic_store(&engine->transport_clock_count, 0);
atomic_store(&engine->transport_beat_position, 0);
atomic_store(&engine->transport_bar_position, 0);
atomic_store(&engine->transport_sample_position, 0);
atomic_store(&engine->quantize_mode_atomic, (int)QUANTIZE_OFF);
atomic_store(&engine->quantize_threshold_atomic, 0);
// Initialize transport
engine->transport.rolling = false;
engine->transport.clock_count = 0;