gpt4 book ai didi

c - c 中的全局计数器未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:36 24 4
gpt4 key购买 nike

我有一些正在处理的队列代码。我试图使用全局 int 来跟踪队列的大小。

#define MAX 100

int size=0;
int gEnqueue=gDequeue=0;

int enqueue()
{
gEnqueue++;
if( size == MAX )
return QUEUE_FULL;
/* snip the actual queue handling */
size++;
return 0;
}

int dequeue()
{
gDequeue++;
if(!size)
return QUEUE_EMPTY;

/* snip actual queue handling */
if(size)
size--;
return 0;
}

当然还有更多的代码,但是太多了,无法发布。

发生的事情是大小卡在我设置的最大值。这两个函数都被调用了偶数次。如果我转储队列,我可以看到其中只有 3 个项目。

什么会导致这个问题?

编辑 #1:使代码示例与我实际编写的代码相匹配

这不是线程化的。

编辑 #2:我是个白痴,应该这样做而不是假设。我错了,甚至调用了 enqueue() 和 dequeue()。

self 提醒,使用真实指标而不是猜测。

最佳答案

如果您不能使用调试器,我建议在两个函数中添加打印语句以显示大小相等,然后在运行程序后检查输出。通常在查看打印日志时问题很明显。

关于c - c 中的全局计数器未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313485/

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