diff options
author | Jason Evans <jasone@canonware.com> | 2017-02-08 18:30:44 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2017-02-09 02:50:03 (GMT) |
commit | de8a68e85304848189643fb48100c18aa9d60e32 (patch) | |
tree | 501e17ec14e3f73068711b8e19c470cc56c50b80 /test/unit | |
parent | 5f118307543b128e1ad6298ec2ab1acd71140095 (diff) | |
download | jemalloc-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.c | 16 |
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); +} |