2016-03-26 24 views
-1

マルチスレッドアプリケーションでは、同じメモリ位置に同時にアクセスする2つのスレッドを防ぐためにmutex::lockが使用されます。私のアプリケーションでは、私は複数のスレッドを使用していませんが、私はコールバック関数を持っています。時々、私はこのエラーを取得:(mutex)コールバック関数のロックC++

Vector iterator + offset out of range

デバッグにベクトルをチェックした後、すべての罰金のようだ:要素の数は、右と無効の要素のどれです。コールバック関数にも同様の可能性がありますか?

答えて

2

いいえ、ありません。この場合、ミューテックスは無関係です。範囲外の例外は、同時アクセスとは関係ありません。それはあなたのコードの単なる論理エラーです。デバッガを使用して、そのエラーを見つけて修正します。

1

コールバック関数への同時呼び出しがない場合は、std::mutexの必要はありません。

Is there a similar possibility for callback functions?

いいえ、同時スレッドがない場合は、コールバック関数が順番に呼び出されます。

範囲外のエラーがある場合は、デバッガを使用して、ベクトル要素へのアクセスに使用されるインデックス値を確認してください。

+0

何に対して序列ですか?それは、正確に何にシーケンスとして続きますか? – nirvanaswap

関連する問題