MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / runtime_reap_completed_workers

Function runtime_reap_completed_workers

src/daemon/runtime.c:1910–1932  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1908}
1909
1910static void runtime_reap_completed_workers(cbm_daemon_runtime_service_t *service) {
1911 for (size_t i = 0; i < service->worker_capacity; i++) {
1912 cbm_daemon_runtime_worker_t *worker = &service->workers[i];
1913 cbm_mutex_lock(&service->mutex);
1914 bool reap = worker->in_use && worker->thread_started && !worker->joining &&
1915 atomic_load_explicit(&worker->done, memory_order_acquire);
1916 if (reap) {
1917 worker->joining = true;
1918 }
1919 cbm_mutex_unlock(&service->mutex);
1920 if (!reap) {
1921 continue;
1922 }
1923 int joined = cbm_thread_join(&worker->thread);
1924 cbm_mutex_lock(&service->mutex);
1925 if (joined == 0) {
1926 runtime_worker_reset_after_join(worker);
1927 } else {
1928 worker->joining = false;
1929 }
1930 cbm_mutex_unlock(&service->mutex);
1931 }
1932}
1933
1934static cbm_daemon_runtime_worker_t *runtime_find_free_worker_locked(
1935 cbm_daemon_runtime_service_t *service) {

Callers 1

runtime_accept_loopFunction · 0.85

Calls 4

cbm_mutex_lockFunction · 0.85
cbm_mutex_unlockFunction · 0.85
cbm_thread_joinFunction · 0.85

Tested by

no test coverage detected