likely(x)和unlikely(x)宏的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ds1130071727/article/details/88352354

在阅读Linux内核代码的时候,经常会看到likely(x)和unlikely(x)宏的使用。那这两个宏有什么作用呢?


这两个宏在内核中的定义如下:

# define likely(x) __builtin_expect(!!(x), 1)
# define unlikely(x) __builtin_expect(!!(x), 0)

可见这里使用了gcc的内建函数__builtin_expect()。
likely(x)等价于x,即if(likely(x))等价于if(x),但是它告诉gcc,x取1的可能性比较大。
unlikely(x)等价于x,即if(unlikely(x))等价于if(x),但是它告诉gcc,x取0的可能性比较大。

猜你喜欢

转载自blog.csdn.net/ds1130071727/article/details/88352354
今日推荐