gpt4 book ai didi

c++ - 多线程标准输出顺序

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

假设我有这样的代码:

main() {
start thread;
put data in task queue;
do some stuff
wait for data in result queue;
printf ("main got result\n");
fflush(stdout);
}

thread() {
while (!done) {
wait for data in task queue;
printf ("thread finished processing\n");
fflush(stdout);
put data in result queue;
}
}

如果我的线程安全数据队列正常工作,是否有可能得到如下输出?

main got result
thread finished processing

stdio 能否像这样重新排序,或者这是我的“线程安全”队列不是的确定标志?

如果我使用 C++ 编译并在上面代码中的 main 的“做一些事情”部分使用 iostream(但仍然使用显示的 printf),答案会改变吗?

最佳答案

没有。

即使你正在异步运行两个线程(我不知道你是否在这里),在每个线程内命令也是按顺序执行的。

因此,您的 thread() 将首先打印“tread finished processing”,然后将数据放入结果队列。只有这样,您的 main() 才会收到消息并打印“main got result”。

关于c++ - 多线程标准输出顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322829/

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