gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:02:12 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/8128395/

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