受信スレッドがあります。別のソースからのメッセージが来ると、スレッドはファイルを開き、メッセージの内容で更新します。ここで問題が発生しました。以下のようにログに「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 Error Opening ** file: C:\writting.txt
2018/04/26 10:28:44.482 I Thread2821 受信メッセージ: src=2
2018/04/26 10:28:44.482 E Thread2821 Error Opening ** file: C:\writting.txt
2018/04/26 10:28:44.482 I Thread2821 受信メッセージ: src=3
2018/04/26 10:28:44.482 E Thread2821 Error Opening ** file: C:\writting.txt
コード構造は非常に古く、メッセージ キューを使用していません。ログから、src1/2/3 からのメッセージが同時にファイルを開きます。
スレッドコード:
Receiver::Run(){
if( Msg.ReadStream(buffer, nLen))
{
pMsg = messageFactory().CreateMessage(Msg);
...
parentThread->ProcessMessage(pMsg); // update file here
} }
スレッドがファイルを同時に開く理由の説明はありますか? この問題を引き起こす可能性のあるシナリオ。せめて時差はあったほうがいいと思います。