Mutexy - Co wybrać?

0

Pisze pewien serwer do gry i okazało się , że muszę korzystać z mutexów przy każdej czynności bo później wątki się blokują. I mam pytanie . Czy używać zwykłego std::mutex - lock() , unlock() . Czy std::mutex<unique_lock> lub std::mutex<lock_guard> . Co jest wydajniejsze i lepsze do użycia ?

0

Coś Ci się pomieszało, std::mutex nie jest kontenerem, lock_guard i unique_guard są. Lock guard z tego co pamiętam to zwykły scope lock. Na unique lock możesz zawołać lock i unlock, oraz możesz stworzyć mutexa bez blokowania z zachowaniem RAII.

Inna sprawa, jeśli musisz tworzyć mutexy przy każdej czynności to znaczy, że coś jest nie tak z Twoim serwerem. Bezmyślne mutexy łatwo mogą zamienić Twój wielowątkowy serwer w de-facto jednowątkowy serwer.

0

Źle to powiedziałem . Może nie przy każdej czynności . Ale gdy muszę wyciągnąć wartośc. z bazy danych , wysłać pakiety . A no tak pomieszało mi się bo powinno być std::unique_lock , std::lock_guard a nie std::mutex.

Nie da się edytować...

Głównie chodzi o to , że muszę używać mutexów dlatego ,że gdy dwa clienty zrobią to samo czyli np. Wybiorą postać to później wątki się blokują i jest czarny ekran . A gdy np jest jeden wątek to wszystko działa idealnie.

0

Wybór postaci powinien dać się zrobić bez muteksów. Można to zrobić po stronie klienta, potem przesłać wynik wyboru do serwera, który zachowa tą informację w miejscu przeznaczonym dla tego klienta i do którego nie ma dostępu inny wątek.

ps. Jako anonim nie możesz edytować swoich postów.

0

Jak dla mnie ten wątek powinien trafić do perełek ; DDD

0

Pierwszy raz się za to zabieram więc nie ma co się śmiać.

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