test_and_set_bit工作原理



有人能在接受的答案下回答我的问题吗

我在读:https://www.kernel.org/doc/htmldocs/kernel-api/API-test-and-set-bit.html但我不太明白。

  • 如果位已经是1,它是保持1还是0?

  • 如果它是0并且我没有错,那么它会变为1吗?

  • 什么是";比特";这里,输入可以是bool,它是字节而不是位。。。

  • 他们所说的返回是否意味着在改变值后,我们会改变回其原始状态?如果是这样的话,那么这就没用了。。。

  • 在C++中,当我尝试调用它时,我得到:

    使用未声明的标识符"test_and_set_bit">

很抱歉,那一页根本不清楚。


用法:

typedef struct lock {
bool is_locked;
} lock_t;
void init(lock_t* l) {
l->is_locked = 0;
}
void lock(lock_t* l) {
while (test_and_set_bit
(l->is_locked));
}
void unlock(lock_t* l) {
l->is_locked = 0;
}

如果位已经是1,它是保持1还是0?

它将被设置为1

如果它是0并且我没有错,那么它会变为1?

是的,它变为1

什么是"比特";这里,输入可以是bool,它是字节而不是位。。。

位是一个单独的位。不是一个字节。输入不能为bool。例如,如果你有一个unsigned char,它由8位组成

返回是否意味着在更改值后,我们会更改回其原始状态?如果是这样的话,那么这就没用了。。。

否。该函数将返回以前的位值。然后,该功能将位设置为1

在C++中,当我尝试调用它时,我得到:使用未声明的标识符"test_and_set_bit">

在标准C++中,此函数不可用。它是在外部库中定义的函数。

相关内容

  • 没有找到相关文章

最新更新