mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-08 22:50:27 +02:00
18 lines
311 B
C
18 lines
311 B
C
#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
|