summaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2017-02-08 18:30:44 (GMT)
committerJason Evans <jasone@canonware.com>2017-02-09 02:50:03 (GMT)
commitde8a68e85304848189643fb48100c18aa9d60e32 (patch)
tree501e17ec14e3f73068711b8e19c470cc56c50b80 /test/unit
parent5f118307543b128e1ad6298ec2ab1acd71140095 (diff)
downloadjemalloc-de8a68e85304848189643fb48100c18aa9d60e32.zip
jemalloc-de8a68e85304848189643fb48100c18aa9d60e32.tar.gz
jemalloc-de8a68e85304848189643fb48100c18aa9d60e32.tar.bz2
Enhance spin_adaptive() to yield after several iterations.
This avoids worst case behavior if e.g. another thread is preempted while owning the resource the spinning thread is waiting for.
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/spin.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/unit/spin.c b/test/unit/spin.c
new file mode 100644
index 0000000..bd368b3
--- /dev/null
+++ b/test/unit/spin.c
@@ -0,0 +1,16 @@
+#include "test/jemalloc_test.h"
+
+TEST_BEGIN(test_spin) {
+ spin_t spinner = SPIN_INITIALIZER;
+
+ for (unsigned i = 0; i < 100; i++) {
+ spin_adaptive(&spinner);
+ }
+}
+TEST_END
+
+int
+main(void) {
+ return test(
+ test_spin);
+}