gpt4 book ai didi

linux - 在 wait_event_timeout linux 接口(interface)中访问共享变量

转载 作者:太空狗 更新时间:2023-10-29 12:05:08 25 4
gpt4 key购买 nike

wait_event_timeout 可用于让线程休眠指定时间或直到某些条件变为真。
我面临这种情况是共享变量的情况。

ret = wait_event_timeout(SLEEP_Q,shared_vaible == 1,TIME_TO_SLEEP);

在调用它之前,我必须释放用于访问共享变量的自旋锁

所以我的问题是,由于在不使用锁的情况下读取共享变量,正确性是否会受到影响?
内核是否确保 wait_event 接口(interface)中的此类条件不存在竞争条件?

最佳答案

如果变量足够小以至于可以自动更新,并且如果所有更新确实以原子方式发生(使用类似ACCESS_ONCE(shared_variable) = 1;),那么您可以使用代码在问题中。

否则,你必须在读取变量时获取锁。最好的方法是创建一个简单的辅助函数:

ret = wait_event_timeout(SLEEP_Q, read_shared_variable() == 1, TIME_TO_SLEEP);

关于linux - 在 wait_event_timeout linux 接口(interface)中访问共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com