Opracowałem proste opakowanie, które zawiera w sobie drzewa JSONObject z drzewem właściwości zwiększenia. Problemem jest segmentacja winy w tym kodzie:Problemy z współbieżnością z drzewem właściwości wzmocnienia Boost
void JSONObject::parse(const std::string &text)
{
std::istringstream ss(text);
boost::property_tree::read_json(ss, *pt);
}
Trochę kontekście Używam JSON dla wiadomości serializacji. Jeśli program używa tylko jednego wątku, działa bez problemów. Ale jeśli program używa dwóch wątków w daje błąd segmentacji w ostatnim wierszu powyższego kodu.
Każdy wątek ma własny obiekt JSONObject i żadna zmienna nie jest współużytkowana między wątkami. Mój pomysł jest taki, że może strumień nie jest wewnętrznie bezpieczny dla wątków.
Czy ktoś może mi pomóc?
czy jesteś pewien, że pt nie jest dzielony między wątkami? Czy próbowałeś, aby minimalne wywoływanie aplikacji było powyżej i używanie kilku wątków jako pracowników? AFAIK istringstream i read_json są bezpieczne dla wątków, więc możliwe jest, że masz błąd w innym miejscu kodu ... –
Tak, jestem pewien. – mariolpantunes
Czy mogę zasugerować opublikowanie http://sscce.org/? Pomoże ci to łatwiej. – Yakk