gpt4 book ai didi

c++ - 奇怪的列表打印函数行为。如果我打印 "\n"则有效,如果删除它则无效

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

有时,C++ 给我带来了很大的乐趣。我真的想不出为什么这行得通/行不通,如果你们有人知道,我会很高兴。

我在线程上每秒调用一次此函数。

此代码有效(打印正在迭代的列表上的内容):

void DeltaList::print()
{
pthread_mutex_lock (&mutex);
printf("\n");
list<Delta*>::iterator it;
for(it=deltas.begin(); it!=deltas.end(); it++)
{
printf("%d ", (int) (*it)->timeleft);
}

pthread_mutex_unlock (&mutex);
}

这个没有(没有打印任何内容):

void DeltaList::print()
{
pthread_mutex_lock (&mutex);
//printf("\n");
list<Delta*>::iterator it;
for(it=deltas.begin(); it!=deltas.end(); it++)
{
printf("%d ", (int) (*it)->timeleft);
}

pthread_mutex_unlock (&mutex);
}

所以...?

最佳答案

这与线程或 C++ 无关。操作系统正在缓冲您的输出,并且当 stdout 是控制台时 \n 会隐式刷新缓冲区。如果您希望每个调用立即显示其输出,请在循环后调用 fflush(stdout)

关于c++ - 奇怪的列表打印函数行为。如果我打印 "\n"则有效,如果删除它则无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27467070/

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