本人的软件需要频繁的打开文件,写入数据,关闭文件。
主进程读文件。
线程写文件。
原因是文件流有句柄限制,所以读写都只有一个流对象。它不停的打开、写数据、关闭。
然后,一般情况下都是正常运行的,但是今天出了一个让本人摸不着头脑的问题。
输出的文件如下:
20130425,0,7524.00,7524.00,7524.00,7524.00,2,16
20130426,0,7490.00,7490.00,7490.00,7490.00,2,14
20130503,0,7464.00,7464.00,7464.00,7464.00,2,16
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
…
很多行:20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
本来只想输出一行的。
出现这个问题的文档有好多个,整个程序原因是死循环的问题也假死了。
讨教高手,这是什么原因造成的,怎么改才可以。
主进程读文件。
线程写文件。
原因是文件流有句柄限制,所以读写都只有一个流对象。它不停的打开、写数据、关闭。
然后,一般情况下都是正常运行的,但是今天出了一个让本人摸不着头脑的问题。
输出的文件如下:
20130425,0,7524.00,7524.00,7524.00,7524.00,2,16
20130426,0,7490.00,7490.00,7490.00,7490.00,2,14
20130503,0,7464.00,7464.00,7464.00,7464.00,2,16
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
…
很多行:20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
本来只想输出一行的。
出现这个问题的文档有好多个,整个程序原因是死循环的问题也假死了。
讨教高手,这是什么原因造成的,怎么改才可以。
解决方案
20
请判断每一步操作后ofstream的状态。
40
仅仅判断流能否打开一个文件是不够的。还需要判断流的状态位。
20
还有一个可能是,没有同步,导致iterator 失效
20
看着像多线程导致的数据损坏,stream 对象的状态已经乱了。