在多线程应用程序中,mutex::lock
用于防止两个线程同时访问同一内存位置。在我的应用程序中,我没有使用多个线程,但我有一个回调函数,它写入一个向量和一个循环,在main函数中读取它。有时,我收到此错误:
矢量迭代器+偏移超出范围
在调试中检查向量后,一切似乎都没问题:元素数量正确,没有任何元素无效。回调函数是否有类似的可能性?
答案 0 :(得分:2)
不,没有。互斥体与此案无关。超出范围的异常与并发访问无关;这只是代码中的逻辑错误。使用调试器查找并修复该错误。
答案 1 :(得分:1)
如果您没有同时拨打回拨函数,则无需std::mutex
。
回调函数是否有类似的可能性?
不,如果没有任何并发线程,则按顺序调用回调函数。
如果超出范围错误,请使用调试器并检查用于访问向量元素的索引值。