view src/event/ngx_event_spinlock.c @ 372:c9fdfccebc49

nginx-0.0.7-2004-06-29-01:03:14 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 28 Jun 2004 21:03:14 +0000
parents f2755a2885c8
children
line wrap: on
line source



void _spinlock(ngx_atomic_t *lock)
{
    ngx_int_t  tries;

    tries = 0;

    for ( ;; ) {

        if (*lock) {
            if (ngx_ncpu > 1 && tries++ < 1000) {
                continue;
            }

            sched_yield();
            tries = 0;

        } else {
            if (ngx_atomic_cmp_set(lock, 0, 1)) {
                return;
            }
        }
    }
}