两个ofstream多线程写同一个文件解决方法

两个ofstream多线程写同一个文件
两个线程代码完全一样:
ofstream file;
file.open(dest_file.data(), ios::out | ios::binary | ios::app);

file.write(buff, size);

未加任何互斥。
现在的问题是,有时写出来的东西会丢掉部分内容,不知道这些内容是在buff里面就掉了(那就是我的逻辑问题),或者是因为我这样多线程使用ofstream有问题,所以我想请问一下,我这样用ofstream有没有问题?
------解决思路----------------------
加锁访问试试,看看还会不会丢数据。
------解决思路----------------------
这种情况建议加锁
------解决思路----------------------
不加互斥,多个线程写一个文件有什么意义啊?除非文件的内容是不要求顺序的。但仔细想想即使不要求顺序,这样做也是没有意义的,多个线程写一个文件我感觉楼主的目的就是为了性能,但除非你的计算机核非常多,要不使用多线程和单线程写文件的性能都是差不多的。
以上是建议,另外,感觉楼主的问题应该是写文件造成的,我感觉buff里的数据应该不会丢。
------解决思路----------------------
多线程的访问文件的话要加锁。
------解决思路----------------------
可以把ofstream作为全局变量然后在调用ofstream::write的时候加锁,或者搞一个缓冲区多个线程里往这个缓冲区里写数据,一个线程将缓冲区的数据写到文件里。
------解决思路----------------------
整个进程只创建一个ofstream file;
打开文件后不要关闭,多线程互斥着file.write
这样文件只有一个,缓冲区只有一个,flush还是不flush都不会乱