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

Function runtime_reap_completed_workers

src/daemon/runtime.c:1938–1960  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1936}
1937
1938static void runtime_reap_completed_workers(cbm_daemon_runtime_service_t *service) {
1939 for (size_t i = 0; i < service->worker_capacity; i++) {
1940 cbm_daemon_runtime_worker_t *worker = &service->workers[i];
1941 cbm_mutex_lock(&service->mutex);
1942 bool reap = worker->in_use && worker->thread_started && !worker->joining &&
1943 atomic_load_explicit(&worker->done, memory_order_acquire);
1944 if (reap) {
1945 worker->joining = true;
1946 }
1947 cbm_mutex_unlock(&service->mutex);
1948 if (!reap) {
1949 continue;
1950 }
1951 int joined = cbm_thread_join(&worker->thread);
1952 cbm_mutex_lock(&service->mutex);
1953 if (joined == 0) {
1954 runtime_worker_reset_after_join(worker);
1955 } else {
1956 worker->joining = false;
1957 }
1958 cbm_mutex_unlock(&service->mutex);
1959 }
1960}
1961
1962static cbm_daemon_runtime_worker_t *runtime_find_free_worker_locked(
1963 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