From 2e9c58b3d43eb11964a7d3dfb94994d5ab841fcd Mon Sep 17 00:00:00 2001 From: Daniel Kochmanski Date: Fri, 8 Dec 2017 13:37:52 +0100 Subject: [PATCH] mulithreading: fix semaphore-signal It didn't wake up all processes to check the condition what caused n+1 lag in condition check for signal-process (when called with n>1). Fixes #421. No regression test, because this is already tested in sem-signal-* tests (they were failing). --- src/c/threads/semaphore.d | 2 +- src/tests/ecl-tests.lisp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/c/threads/semaphore.d b/src/c/threads/semaphore.d index 04078f61c..8811be3f0 100644 --- a/src/c/threads/semaphore.d +++ b/src/c/threads/semaphore.d @@ -79,7 +79,7 @@ mp_semaphore_wait_count(cl_object semaphore) } AO_fetch_and_add((AO_t*)&semaphore->semaphore.counter, n); if (semaphore->semaphore.queue_list != ECL_NIL) { - ecl_wakeup_waiters(env, semaphore, ECL_WAKEUP_ONE); + ecl_wakeup_waiters(env, semaphore, ECL_WAKEUP_ALL); } @(return); } @) diff --git a/src/tests/ecl-tests.lisp b/src/tests/ecl-tests.lisp index 97223ff82..a31c9eabd 100644 --- a/src/tests/ecl-tests.lisp +++ b/src/tests/ecl-tests.lisp @@ -26,7 +26,7 @@ (suite 'make-check '(executable ieee-fp eprocess package-ext hash-tables ansi+ mixed cmp emb - ffi mop run-program)) + ffi mop run-program mp ieee-fp)) (defmacro is-true (form)