здравствуйте, в одной из реализаций стандартных библиотек си встретил следующую реализацию спинлока:
int pthread_spin_lock(pthread_spinlock_t *s)
{
while (*(volatile int *)s || a_cas(s, 0, EBUSY)) a_spin();
return 0;
}
static void a_spin()
{
volatile int tmp = 0;
a_cas(&tmp, 0, 0);
}
что делает a_spin? что за магия