[C++] jak zrezygnowac z optymalizacji vectora klas

0

mam cos takiego
class klasa;

vector<klasa> K;

i cos takiego

vector<vector<int> > arena(5,vector<int>(5));

sa to obiekty globalne ktore uzywane sa w osobnych watkach. smieszne rzeczy sie dzieja po odpaleniu programu.
watki nie zmieniaja wartosci ktore wpisuje do tych obiektow. chcialbym uzyc volatile ale jesli zrobie
volatile vector<klasa> K;
vector<volatile klasa="klasa"> K;
albo
vector<klasa> volatile K;

to sie kompilator pluje ze cos tam

dzieki z gory za podpowiedzi

0

Muteksy.

0

volatile nie wystarczy. Musisz zadbać o synchronizację.
Zacząć możesz tutaj: http://www.google.pl/search?q=thread+safe+vector+c%2B%2B

0
winerfresh napisał(a)

Muteksy.

2 vectory == 2 sekcje krytyczne

0
crayze napisał(a)

2 vectory == 2 sekcje krytyczne
G. prawda. Wszystko zależy, zależy, zależy ... zależy od charakterystyki problemu jaki mechanizm synchronizacji zaprojektujemy.

0
winerfresh napisał(a)

Muteksy.

adf88 napisał(a)

volatile nie wystarczy. Musisz zadbać o synchronizację.

sorry za offtop, ale volatile jest wlasnie stosowane glownie do implementacji synchronizacji, np. wlasnych muteksow nie-system-wide, tylko trzeba je stosowac wlasciwie: to nie elementy wektora same w sobie volatile, ale to-cos co trzyma informacje, czy z tych elementow w tej chwili ktos korzysta. wewnetrzne flagi/liczniki w muteksach/sekcjach krytycznych maja nature volatile

a poza tym drobiazgiem, z reszta sie zgadzam, nie tedy droga autorze drogi:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1