ngx_align 值對齊宏

ngx_align 值對齊宏

ngx_align 爲nginx中的一個值對齊宏。主要在須要內存申請的地方使用,爲了減小在不一樣的 cache line 中內存而生。nginx

// d 爲須要對齊的
// a 爲對齊寬度,必須爲 2 的冪
// 返回對齊值
#define ngx_align(d, a)     (((d) + (a - 1)) & ~(a - 1))

原理簡單,利用 ~(a - 1) 的低位全爲 0。在與 ~(a - 1)& 操做時,低位的1被丟棄,就獲得了a倍數的值(對齊)。3d

若是使用原始值直接與 ~(a - 1)& 操做,那麼獲得的對齊值是會小於等於原始值的,這樣會形成內存重疊,而指望的對齊值是一個大於等於原始值的,因此須要加上一個數來補上至對齊值這中間的差,這個數爲 (a - 1) ,選擇這個數的緣由是 (a - 1) & ~(a - 1) 的結果爲0:
code

相關文章
相關標籤/搜索