Chcę używać wielowątkowości w moim mmorpg w C++, mam 5 wątków w tej chwili i chcę podzielić kolejny na dwa, ale mój serwer mmorpg konczy z mnóstwem wektorów, a ponieważ wektory nie mogą pisać nici, nie mogę tego zrobić poprawnie.wielowątkowość w c w mmorpg
Czy istnieje alternatywa dla używania wektorów przez wątki, czy istnieje sposób na bezpieczne przechowywanie wielowątkowego wektora do odczytu/zapisu.
Oto przykład tego, czego szukam, spróbuj znaleźć alternatywę dla czegoś takiego: Oczywiście nie jest to rzeczywisty kod, ja tylko robię przykład.
//Thread1
//Load monster and send data to the player
globals::monstername[myid];//Myid = 1 for now -.-
senddata(globals::monstername[myid]);//Not the actual networking code, im just lazy.
//Thread2
//Create a monster and manage it
globals::monstername.push_back("FatBlobMonster");
//More managing code i cant be bothered inserting >.<
Dziękuję. Czy możesz wyjaśnić, jak z tego korzystać i jak to działa? :) –
Proszę spojrzeć na: http://en.cppreference.com/w/cpp/thread/lock –
To nie zadziała zbyt dobrze. Ponieważ blokujesz całą tablicę. Więc podczas gdy możesz mieć wiele wątków - wszyscy będą czekać na siebie nawzajem, aby uzyskać dostęp do wektora. Więc operacje na wektorze będą miały takie same cechy wydajności, jak gdyby były w jednym wątku. –