Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Uruchomienie funkcji z wątku na rzecz innego obiektu ( wielowątkowy serwer, SFML 2,1 )

Ostatnio zmodyfikowano 2014-09-04 18:50
Autor Wiadomość
Monika90
» 2014-09-03 22:23:07

auto f = std::bind( & Client::RecevingDataThread, & Core::client, p_message );
bind tworzy kopię wskaźnika, jeżeli chcesz go przekazać przez referencję to użyj std::ref
, o tak:
auto f = std::bind( & Client::RecevingDataThread, & Core::client, std::ref( p_message ) );
ale i tak będziesz miał UB.
P-116616
colorgreen19
Temat założony przez niniejszego użytkownika
» 2014-09-03 22:27:56
elegancko, dziękuje, działa ;)
btw. co to UB? nie jestem az tak obeznany w nazewnictwie czy skrótach
i czy w wypadku tego kodu nadal powinienem synchronizować wątki?
P-116617
Monika90
» 2014-09-03 22:42:38
UB to jest undefined behavior, czyli niezdefiniowane zachowanie. Twój program ma UB z powodu data race, czyli wyścigu do danych. Data race wystepuje wtedy kiedy dwa lub więcej wątków operuje na tej samej zmiennej i co najmniej jedna z tych operacji to zmiana wartości tej zmiennej, dokładnie tak jak u Ciebie.
P-116618
colorgreen19
Temat założony przez niniejszego użytkownika
» 2014-09-03 22:45:18
No dobrze... ale czy ten wyścig do danej czymś szkodzi, jak i tak jest ona "monitorowana" w pętlach wykonujących się równolegle?
P-116619
1aam2am1
» 2014-09-03 22:51:28
Mutex
P-116621
colorgreen19
Temat założony przez niniejszego użytkownika
» 2014-09-04 18:50:23
" Dlaczego równoczesny dostęp do danej z 2 wątków jest niebezpieczny? - Mutex" brawo odpowiedź.
Ja sie nie pytam czego i jak mam użyć do synchronizacji wątków, tylko dlaczego równoczesny dostęp do danej z 2 wątków jest niebezpieczny? - odpowiedź znalazłem, temat zamykam, dziękuje wszsytkim za pomoc
P-116635
1 2 « 3 »
Poprzednia strona Strona 3 z 3