• test_bit原子操作


    原子位操作

         操作函数的参数是一个指针和一个位号

    原子位操作定义在文件中。令人感到奇怪的是位操作函数是对普通的内存地址进行操作的。原子位操作在多数情况下是对一个字长的内存访问,因而位号该位于0-31之间(在64位机器上是0-63之间),但是对位号的范围没有限制。

    原子操作中的位操作部分函数如下:
    void set_bit(int nr, void *addr)        原子设置addr所指的第nr位
    void clear_bit(int nr, void *addr)      原子的清空所指对象的第nr位
    void change_bit(nr, void *addr)         原子的翻转addr所指的第nr位
    int test_bit(nr, void *addr)            原子的返回addr位所指对象nr位
    int test_and_set_bit(nr, void *addr)    原子设置addr所指对象的第nr位,并返回原先的值
    int test_and_clear_bit(nr, void *addr)  原子清空addr所指对象的第nr位,并返回原先的值
    int test_and_change_bit(nr, void *addr)  原子翻转addr所指对象的第nr位,并返回原先的值

        unsigned long word = 0;

        set_bit(0, &word); /*第0位被设置*/

        set_bit(1, &word); /*第1位被设置*/

        clear_bit(1, &word); /*第1位被清空*/

        change_bit(0, &word); /*翻转第0位*/

  • 相关阅读:
    A1035
    A1005
    A1073
    A1061
    A1058
    A1027
    A1019
    Java 操作临时文件创建与删除
    面试必会之HashMap源码分析
    springboot整合cxf框架启动报错
  • 原文地址:https://www.cnblogs.com/zxc2man/p/14653138.html
Copyright © 2020-2023  润新知