Nginx 源码完全剖析(11)ngx_spinlock
- 作者:钟超
- 博客:http://Blog.CSDN.net/Poechant
- 邮箱:zhongchao.ustc#gmail.com (#->@)
- 日期:2012年10月12日
Nginx 是多进程模式的,一个 master 与多个 workers,一般工作在多核 CPU 上,所以自旋锁就是必须用到的。Nginx 中的自旋锁的定义,位于 ngx_spinlock.c 中,如下:
void
ngx_spinlock(ngx_atomic_t *lock, ngx_atomic_int_t value, ngx_uint_t spin)
{
#if (NGX_HAVE_ATOMIC_OPS)
ngx_uint_t i, n;
for ( ;; ) {
// lock 即为锁,是一个整数
// ngx_atomic_cmp_set 是平台相关的,一般都涉及内联汇编