gpt4 book ai didi

在循环控制条件内调用 void 函数

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:30 25 4
gpt4 key购买 nike

我想用以下模式编写一个循环,其中 spin_lock 的返回类型是 void:

while(workersAvailable() && spin_lock(workQueueLock) && (!list_empty(workQueue) || spin_unlock(workQueueLock)) ) {
...
spin_unlock(workQueueLock);
//long taking work, with no need for a lock
}

推理:

  • 我想持有锁的时间越短越好,workersAvailable()
  • 不需要它
  • 我知道我可以写一个函数 int f() {spin_lock(workQueueLock);返回 !list_empty(workQueue) || spin_unlock(workQueueLock);,但是我觉得应该有更好的方法
  • 我知道 && void 不能工作,因为 && 需要两个操作数
  • 我试过 , 但它无法编译,此外我不确定 , 是否保证操作顺序。

问题:有没有什么方法可以在不使用额外函数且不在循环体内移动控制逻辑的情况下实现这一点(即 spin_lock(workQueueLock); if(list_empty(workQueue)){ || spin_unlock(workQueueLock); break;})?

最佳答案

如果你真的想这样做,你可以使用,操作符,它会丢弃所有左边的操作数,只评估最后一个

while(workersAvailable() && 
(spin_lock(workQueueLock), 1) &&
(!list_empty(workQueue) || spin_unlock(workQueueLock)))

但在我看来,你应该写函数,这样更清晰。

关于在循环控制条件内调用 void 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28092122/

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