wątki _beginthread zdarzenia i sekcje krytyczne
Ostatnio zmodyfikowano 2017-04-19 14:35
zolty13 Temat założony przez niniejszego użytkownika |
wątki _beginthread zdarzenia i sekcje krytyczne » 2017-04-17 15:07:50 Hej mam do was pytanie w kontekście tego artykułu: http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Zaawansowane/Watki/337. Jak za pomocą tych bibliotek wymusić przerwanie wątku? Potrzebuje tego do swojego programu, który tworzy 2 watki, które przeszukują równolegle kopiec. Jako że funkcja będąca w wątku nie może zwracać wartości to muszę używać pola w klasie kopiec, które trzyma wynik. Problem w tym, że gdy jeden wątek już znajdzie, drugi dalej szuka i czasem może stać się tak że zamieni wartość tego pola zanim zdążę się do niego dostać na zewnątrz. ( Jest tam sekcja krytyczna, która zabrania 2 wątkom na raz modyfikować pole (wspólnego) obiektu) Jednak nie wiem jak wpłynąć na to żeby 2 wątek nie nadpisywał danych. Próbuję wymyślić coś ze zdarzeniami, ale brakuje mi jakiegoś wzorca projektowego żeby dobrze to wymyślić. Bo chiałem zrobić tak że wątek któy pierwszy znajdzie szukaną liczbe - klucz ustawi zdarzenie tak żeby drugi już nie mógł tego zrobić w sekcji krytycznej. Problem w tym że wtedy ten 2 wątek będzie wisieć i się nie skończy. |
|
DejaVu |
» 2017-04-18 16:45:33 Lepiej użyj std::thread - to jest znacznie lepsze rozwiązanie, ponieważ kod będzie działał na Windowsie i Linuxie. Przerywać wątku nie musisz. Każdy wątek po prostu ma zrobić swoje. |
|
zolty13 Temat założony przez niniejszego użytkownika |
» 2017-04-19 14:35:27 mhm to zmiencie to w kursie :D, bo w tym artykule pisze ze ta metoda jest zalecana :D dzieki |
|
« 1 » |