[英]stdout order with multiple threads
假设我有这样的代码:
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的“做一些事情”部分中使用iostreams(但仍在显示的地方使用printf),答案是否会更改?
不。
即使您异步运行两个线程(我也不知道您是否在这里),每个线程中的命令也会按顺序执行。
因此,您的thread()将首先打印“ tread完成的处理”,然后将数据放入结果队列。 只有这样,您的main()才会收到消息并打印“主要结果”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.