Boost Property ağaçlarıyla bir JSONObject ürününü kapsülleyen basit bir sarıcı geliştirdim.Eşzamanlılık sorunları wih Boost Özellik ağacı
void JSONObject::parse(const std::string &text)
{
std::istringstream ss(text);
boost::property_tree::read_json(ss, *pt);
}
Biraz bağlam, ben mesajı seri hale JSON kullanıyorum: sorunu bu kodda bir segmentasyon hatam. Program sadece bir iş parçacığı kullanıyorsa, sorunsuz çalışır. Ancak programda iki iplik kullanılıyorsa yukarıdaki kodun son satırında bölümleme hatası verir.
Her iş parçacığının kendi JSONObject nesnesi vardır ve değişkenlerden hiçbiri iş parçacıkları arasında paylaşılmaz. Benim fikrim, belki de akımın iç dişli güvenli değil.
Bana yardım eden var mı?
pt'nin threadlar arasında paylaşılmadığından emin misiniz? Fonksiyonun üstünde minimum uygulama çağrısı yapmayı ve işçiler olarak birkaç iş parçacığı kullanmayı denediniz mi? AFAIK istringstream ve read_json iş parçacığı güvenlidir, bu nedenle kodunuzun başka bir yerinde hata yapabilmeniz mümkün ... –
Evet, eminim. – mariolpantunes
http://sscce.org/ adresini göndermeyi önerebilir miyim? Daha kolay yardımcı olur. – Yakk