0

TinyXML は優れた XMl ライブラリであるため、クライアントが UDP マルチキャスト モードでサーバーからパケットを受信するなど、ネットワーク転送でパケット データを保存するために使用します。クライアントは複数のマルチキャスト グループに参加するため、マルチスレッドを作成して、異なるファイルでデータを受信および書き込みする必要があります (もちろん、ファイルの数はマルチキャスト グループの数と同じです)。DoWrite(char*,size_t) 関数を持つ writeXML クラスを設計します。

そのような :

void DoWrite(char*,size_t)
{
boost::unique_lock<boost::mutex> lLock(m_lock);
lLock.lock();
}

しかし問題は、DoWrite 関数が呼び出されるたびに、boost:lock_error が発生することです。誰が私を助けることができます?どうも!強調されたテキスト

4

1 に答える 1

1

lLock.lock();コードから削除し、渡されたミューテックスをboost::unique_lock呼び出しlockます。そのため、手動で呼び出す必要はありません (ミューテックスで lock を 2 回呼び出しています)。参照から:

unique_lock(ロック可能 & m)

効果:

m への参照を格納します。m.lock() を呼び出します。

また、boost::lock_guardロックの取得を延期する場合を除き、代わりに使用してください。詳細については、ドキュメントを参照してください。

于 2012-09-04T02:05:21.763 に答える