假设我有这样的代码:
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),答案是否会改变?