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.
This commit is contained in:
Jason Evans
2017-02-08 10:30:44 -08:00
parent 5f11830754
commit de8a68e853
3 changed files with 28 additions and 6 deletions

16
test/unit/spin.c Normal file
View File

@@ -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);
}