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

Function runtime_reap_completed_workers

src/daemon/runtime.c:1969–1991  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1967}
1968
1969static void runtime_reap_completed_workers(cbm_daemon_runtime_service_t *service) {
1970 for (size_t i = 0; i < service->worker_capacity; i++) {
1971 cbm_daemon_runtime_worker_t *worker = &service->workers[i];
1972 cbm_mutex_lock(&service->mutex);
1973 bool reap = worker->in_use && worker->thread_started && !worker->joining &&
1974 atomic_load_explicit(&worker->done, memory_order_acquire);
1975 if (reap) {
1976 worker->joining = true;
1977 }
1978 cbm_mutex_unlock(&service->mutex);
1979 if (!reap) {
1980 continue;
1981 }
1982 int joined = cbm_thread_join(&worker->thread);
1983 cbm_mutex_lock(&service->mutex);
1984 if (joined == 0) {
1985 runtime_worker_reset_after_join(worker);
1986 } else {
1987 worker->joining = false;
1988 }
1989 cbm_mutex_unlock(&service->mutex);
1990 }
1991}
1992
1993static cbm_daemon_runtime_worker_t *runtime_find_free_worker_locked(
1994 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