(互斥锁)锁定回调函数C ++

时间:2016-03-26 15:38:49

标签: c++ callback

在多线程应用程序中,mutex::lock用于防止两个线程同时访问同一内存位置。在我的应用程序中,我没有使用多个线程,但我有一个回调函数,它写入一个向量和一个循环,在main函数中读取它。有时,我收到此错误:

  

矢量迭代器+偏移超出范围

在调试中检查向量后,一切似乎都没问题:元素数量正确,没有任何元素无效。回调函数是否有类似的可能性?

2 个答案:

答案 0 :(得分:2)

不,没有。互斥体与此案无关。超出范围的异常与并发访问无关;这只是代码中的逻辑错误。使用调试器查找并修复该错误。

答案 1 :(得分:1)

如果您没有同时拨打回拨函数,则无需std::mutex

  

回调函数是否有类似的可能性?

不,如果没有任何并发​​线程,则按顺序调用回调函数。

如果超出范围错误,请使用调试器并检查用于访问向量元素的索引值。