diff options
Diffstat (limited to 'libguile/whippet/src/spin.h')
-rw-r--r-- | libguile/whippet/src/spin.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libguile/whippet/src/spin.h b/libguile/whippet/src/spin.h new file mode 100644 index 000000000..d650c3216 --- /dev/null +++ b/libguile/whippet/src/spin.h @@ -0,0 +1,18 @@ +#ifndef SPIN_H +#define SPIN_H + +#include <sched.h> +#include <unistd.h> + +static inline void yield_for_spin(size_t spin_count) { + if (spin_count < 10) + __builtin_ia32_pause(); + else if (spin_count < 20) + sched_yield(); + else if (spin_count < 40) + usleep(0); + else + usleep(1); +} + +#endif // SPIN_H |