Çok iş parçacıklı uygulamamda, aynı std::deque
kullanan iki iş parçacığım var. Bunlardan biri yazıyor, diğeri ise okur (veri analizi için).Çok Dişli aynı erişim C++
bu hatayı alıyorum:
Deque iterator not dereferencable
DÜZENLEME: Bu benim deque okuma için kullanmak koddur. Hata, if koşulunda daha derin bir yere atılır (at
ile deque'e erişiyorum).
for (int i = 0; i <myDeque.size(); i++){
try{
if (myDeque.at(i) > 10){
//do stufff
}
}
catch (...){
cout << "ERROR" << endl;
}
}
Sanırım, bunun nedeni, bu çok-parçalı deque erişiminden kaynaklanıyor. try-catch
bloğu ile hatayı yakalayamıyorum. Bunu yapamam, çünkü daha derin bir "düzlemde" atıldı mı? Bu hatayı düzeltmek için bir olasılık var mı?
'deque' boş mu? –
Hayır, boş değil. – black
Dequeue nesnesine erişimi serileştirmek için herhangi bir senkronizasyon mekanizması (kilit veya muteks gibi) kullanıyor musunuz? Yoksa, yapmalısınız; Paylaşılan veri yapısına erişebilmek için birden fazla iş parçacığı istediğinizde standart çözüm budur. –