0

受信スレッドがあります。別のソースからのメッセージが来ると、スレッドはファイルを開き、メッセージの内容で更新します。ここで問題が発生しました。以下のようにログに「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
     } }

スレッドがファイルを同時に開く理由の説明はありますか? この問題を引き起こす可能性のあるシナリオ。せめて時差はあったほうがいいと思います。

4

0 に答える 0