aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_smp.h
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2011-11-13 21:43:04 +0100
committerRickard Green <[email protected]>2011-11-13 21:43:04 +0100
commit32ef224c9769cd9359496953075e0133358ccf86 (patch)
tree791517a9be6dbf7a9081192edbf96e69f086d2e1 /erts/emulator/beam/erl_smp.h
parentca58731b5df58aa2a8b42c583d1ba7bb929e72b2 (diff)
parent15774d2ac5ba38dba287309f91eb7e4f58b9a636 (diff)
downloadotp-32ef224c9769cd9359496953075e0133358ccf86.tar.gz
otp-32ef224c9769cd9359496953075e0133358ccf86.tar.bz2
otp-32ef224c9769cd9359496953075e0133358ccf86.zip
Merge branch 'rickard/win-cs-mutex/OTP-9671'
* rickard/win-cs-mutex/OTP-9671: Use critical sections as mutex implementation on Windows
Diffstat (limited to 'erts/emulator/beam/erl_smp.h')
-rw-r--r--erts/emulator/beam/erl_smp.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_smp.h b/erts/emulator/beam/erl_smp.h
index a89ddfbcc1..63179dfad4 100644
--- a/erts/emulator/beam/erl_smp.h
+++ b/erts/emulator/beam/erl_smp.h
@@ -822,6 +822,16 @@ erts_smp_cnd_wait(erts_smp_cnd_t *cnd, erts_smp_mtx_t *mtx)
#endif
}
+/*
+ * IMPORTANT note about erts_smp_cnd_signal() and erts_smp_cnd_broadcast()
+ *
+ * POSIX allow a call to `pthread_cond_signal' or `pthread_cond_broadcast'
+ * even though the associated mutex/mutexes isn't/aren't locked by the
+ * caller. Our implementation do not allow that in order to avoid a
+ * performance penalty. That is, all associated mutexes *need* to be
+ * locked by the caller of erts_smp_cnd_signal()/erts_smp_cnd_broadcast()!
+ */
+
ERTS_GLB_INLINE void
erts_smp_cnd_signal(erts_smp_cnd_t *cnd)
{