有人能在接受的答案下回答我的问题吗
我在读: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++中,此函数不可用。它是在外部库中定义的函数。