diff options
author | Rickard Green <[email protected]> | 2011-12-08 15:18:51 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2011-12-08 15:18:51 +0100 |
commit | 9bc76f48bfbd9773d77d75b1a94cf1097cca9fb6 (patch) | |
tree | 9e6ec33806e1a6cf1dd96754d0f5b52b83011ac4 /erts/emulator/beam/erl_async.c | |
parent | 18589c852aa7a535bb518cf79a2c510caa830110 (diff) | |
parent | d51b42b76fb9d6826ee282352ca878c02a7b459d (diff) | |
download | otp-9bc76f48bfbd9773d77d75b1a94cf1097cca9fb6.tar.gz otp-9bc76f48bfbd9773d77d75b1a94cf1097cca9fb6.tar.bz2 otp-9bc76f48bfbd9773d77d75b1a94cf1097cca9fb6.zip |
Merge branch 'rickard/generic-thr-queue/OTP-9632'
* rickard/generic-thr-queue/OTP-9632:
Give elements of lock-free queues some time to be deallocated
Fix cleanup of elements in lock-free queues
Diffstat (limited to 'erts/emulator/beam/erl_async.c')
-rw-r--r-- | erts/emulator/beam/erl_async.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_async.c b/erts/emulator/beam/erl_async.c index 2dc7237f7c..8bca9ae582 100644 --- a/erts/emulator/beam/erl_async.c +++ b/erts/emulator/beam/erl_async.c @@ -304,8 +304,9 @@ static ERTS_INLINE ErtsAsync *async_get(ErtsThrQ_t *q, switch (erts_thr_q_inspect(q, 1)) { case ERTS_THR_Q_DIRTY: break; + case ERTS_THR_Q_NEED_THR_PRGR: #ifdef ERTS_SMP - case ERTS_THR_Q_NEED_THR_PRGR: { + { ErtsThrPrgrVal prgr = erts_thr_q_need_thr_progress(q); erts_thr_progress_wakeup(NULL, prgr); /* @@ -522,8 +523,8 @@ int erts_async_ready_clean(void *varq, void *val) switch (cstate) { case ERTS_THR_Q_DIRTY: return ERTS_ASYNC_READY_DIRTY; -#ifdef ERTS_SMP case ERTS_THR_Q_NEED_THR_PRGR: +#ifdef ERTS_SMP *((ErtsThrPrgrVal *) val) = erts_thr_q_need_thr_progress(&arq->thr_q); return ERTS_ASYNC_READY_NEED_THR_PRGR; |