2016-03-26 24 views
-1

Çok iş parçacıklı bir uygulamada, aynı iş parçacığına aynı anda erişen iki iş parçacığını önlemek için mutex::lock kullanılır. Uygulamamda, birden çok iş parçacığı kullanmıyorum, ancak bir vektöre ve ana işlevdeki bir döngüye yazan bir geri arama işlevi var. Bazen, bu hatayı alıyorum: öğe sayısı doğru ve geçersiz elemanların hiçbiri: hata ayıklama içinde vektör kontrol ettikten sonra(mutex) geri arama işlevi için kilitleme C++

Vector iterator + offset out of range

, her şey yolunda gibi görünüyor. Geri arama işlevleri için benzer bir olasılık var mı?

cevap

2

Hayır, yok. Muteksler bu dava için ilgisizdir. Aralık dışı istisnanız eşzamanlı erişim ile hiçbir ilgisi yoktur; Kodunuzda sadece mantıklı bir hata var. Hata ayıklayıcınızı kullanarak bu hatayı bulun ve düzeltin.

1

Geri arama işlevinizle eşzamanlı arama yapmıyorsanız, std::mutex'a gerek yoktur. herhangi eşzamanlı konuları bulunmuyorsa

Is there a similar possibility for callback functions?

Hayır, bir geri arama işlevi, sırayla denir.

Aralık dışı hatalarınız varsa, hata ayıklayıcısını kullanın ve vektör öğelerine erişmek için kullanılan dizin değerlerini kontrol edin.

+0

Neye göre sıralı sıra? Tam olarak ne için bir dizi olarak takip eder? – nirvanaswap

İlgili konular