在模拟程序中,我试图将测量值打印到文本文件中。该项目是 Java、C 和 C++ 的组合,但我正在使用的文件是 C 语言。打印代码如下:
if(sample)
fprintf(MeasureInfo->measuresFile, "%d: %f\n", count++, sample);
这适用于部分输出,但有大量数据(大约 100 到 1000 个度量)未打印到文本文件中。相反,我在 Sublime Text 中只看到大量 NUL,在 bless 中看到 0 字节:
436: 0.851661
437: 0.043466
(Really large block of NUL all in one line).210402
751: 0.357543
752: 0.816120
到目前为止,我只使用了部分代码,并认为这可能是一个并发问题。因此,我打印出所有使用 getpid() 访问该函数的 pid,它给了我不同的 pid(例如 19036、19037、19038)。然后我尝试使用 pthread_mutex_lock 和 pthread_mutex_unlock 但它产生了相同的输出。我尝试的另一件事是每 400 次测量后使用睡眠。这实际上有助于但将产生的小节数量减少了四分之一。
您知道实际问题可能是什么以及如何解决吗?如果这是一个已回答或简单的问题,我真的很抱歉,但我尝试并搜索了一段时间并没有找到解决方案。