Witam,
Mam maly problem,
Program dostaje SIGILL
Mam obiekt "a" ktory zapisuje sie do obiektu "b" w innym watku(nadrzednym) przekazujac jednoczesnie
referencje do samego siebie. b->subscribe(*this)
Jesli to na co sie zapisal jest dostepne obiekt w watku nadrzednym wywoluje "a->upd()
" (a jest wskaznikiem bo przechowuje otrzymane referencje w obiekcie "b" jako std::vector<a*>
)
tzn. proboje bo w tym momencie leci SIGILL,
Dlaczego mnie to zastanawia?
Bo jak wszystko pracowalo w jednym watku nie bylo problemow.
z tym ze nie przekazywalem *this
ale b->subscirbe(&a)
.
Moze powinienem troche bardziej doczytac o watka,
system przydziela calkowicie nowa pamiec dla watku, ale mozliwe jest : b->subscribe(*this)
wiec mimo iz obiekt "b" znajduje sie w innym watku jest poprawnie adresowany.
doczytalem tez ze SIGILL leci najczesciej jak nadpisuje adres powrotu z funkcji na stosie,
okej moze sie to zgadzac, ale dlaczego dzialalo
jesli oba obiekty "a" i "b" znajdowaly sie w tej samej przeztrzeni adresowej...(tzn. jako kompozycje w jednej klasie.?)
kazde wsparcie mile widziane.