【发布时间】:2019-02-20 09:07:21
【问题描述】:
我正在尝试寻找 fflush 的替代方法来清除 C++ 中的缓冲区。我正在编写一个 C++ 程序来分叉 3 个孩子并在 N 个循环中打印它们,但 O/P 的顺序不正确。尝试使用 cout
【问题讨论】:
-
您绝对不能保证并发运行进程的输出顺序。由您的代码来实现它需要的任何机制,以便以正确的顺序从多个进程生成输出。如果它是一个单一的多线程程序,那么互斥锁是典型的方法。对于单独的进程,通常使用基于文件锁定的方法。并且刷新
std::cout将是一个组成部分,这也将涉及您将选择实施的任何进程间同步方法的实施。 -
另外,
fflush()也不提供任何保证并发进程的输出顺序。所以 Sam 的 cmets 也适用于 C。
标签: c++ fork flush fflush endl