У меня есть получающая нить, когда приходят сообщения от разных src, нить открывает файл и обновляет его содержимым сообщения. Теперь я столкнулся с проблемой, мой журнал получает сообщения об ошибках «open file error», как показано ниже:
2018/04/26 10: 28: 44.222 I Thread2821 Получать сообщение: src = 5
2018/04/26 10: 28: 44.223 I Thread2821 Получать сообщение: src = 0
2018/04/26 10: 28: 44.482 I Thread2821 Получать сообщение: src = 1
2018/04/26 10: 28: 44.482 E Thread2821 Ошибка открытия ** файла: C: \ writting.txt
2018/04/26 10: 28: 44.482 I Thread2821 Получать сообщение: src = 2
2018/04/26 10: 28: 44.482 E Thread2821 Ошибка открытия ** файла: C: \ writting.txt
2018/04/26 10: 28: 44.482 I Thread2821 Получать сообщение: src = 3
2018/04/26 10: 28: 44.482 E Thread2821 Ошибка открытия ** файла: C: \ writting.txt
структура кода очень старая, она не использовала очередь сообщений. Из журнала, сообщения от src1 / 2/3, откройте файл одновременно.
код потока:
Receiver::Run(){
if( Msg.ReadStream(buffer, nLen))
{
pMsg = messageFactory().CreateMessage(Msg);
...
parentThread->ProcessMessage(pMsg); // update file here
} }
Есть ли объяснение, почему поток одновременно открывает файл? Какой сенарио может вызвать эту проблему. Я думаю, что это должно иметь разницу во времени, по крайней мере.