Witam,
postanowiłem napisać prostą grę w Javie (dokładniej bilard) wykorzystującą wielowątkowość. Niestety nie wiem w jaki sposób mam te wątki rozpisać.
Nie wiem czy 1 bila = 1 wątek uruchamiany co 0.05 sekundy, czy dać jeden wątek, który będzie obsługiwał położenie wszystkich bil.
Nie wiem też jak wymieniać dane o współrzędnych między różnymi wątkami.
Planszę rysuję za pomocą Canvas.
Proszę o porady i sugestie :)
Pozdrawiam :)
- Rejestracja:około 14 lat
- Ostatnio:ponad 11 lat
- Postów:63
- Rejestracja:około 16 lat
- Ostatnio:11 miesięcy
- Postów:1398
Co znaczy "watek uruchamiany co 0,5 sek" ?
- Rejestracja:około 14 lat
- Ostatnio:ponad 11 lat
- Postów:63
No myślałem, że dzięki temu będziemy wiedzieli ile czasu minęło od ostatniego przesunięcia/uderzenia bili (bo za to ten wątek miał odpowiadać).

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Ale po co chcesz to wiedzieć? Mnie się wydaje że (zważywszy na małą ilość bil) możesz zrobić jedna bila = jeden wątek, ale odpowidzialny za poruszanie się tej bili.

- Rejestracja:ponad 16 lat
- Ostatnio:prawie 9 lat
Poza tym nie da się zagwarantować przełączania wątków co 50ms, przełączenie też zabiera czas. W systemie pracują inne procesy, które mają wiele wątków, a rdzeni masz ile?
Czy ty chcesz napisać grę bilard, czy tylko poćwiczyć wielowątkowość? Jeśli wielowątkowość, to proponuję zacząć od klasycznych problemów pisarzy-czytających etc. Jak już będziesz miał biegłość w synchronizacji wątków etc. Pomyśl jak to inaczej wykorzystać.

- Rejestracja:ponad 18 lat
- Ostatnio:5 dni
Wielowątkowość w grze raczej polega na tym, że pierwszy wątek nasłuchuje wciśniecie klawiszy na klawiaturze, ew. kliknięcia myszy, drugi aktualizuje "scenę" czyli pozycję elemtów w okienku/na ekranie, a trzeci wszystko rysuje, aczkolwiek takie zabawy robiło się za czasów C. W Javie jest to bez sensu.

- Rejestracja:prawie 20 lat
- Ostatnio:około 18 godzin
Rozbijanie programu na wątki nie ma sensu jeżeli te wątki muszą wymieniać kosmiczne ilości danych i wzajemnie się synchronizować. Takie rzeczy zabijają wydajność, źle skonstruowane algorytmy wielowątkowe mogą być nawet wolniejsze od jednowątkowych na wielowątkowych komputerach.

- Rejestracja:około 14 lat
- Ostatnio:ponad 9 lat
wiele wątków ma zwiększać wydajność gry, a to co robisz moim zdaniem kompletnie nie ma sensu
w ogóle nie widzę zastosowania dla wątków w grze w bilard
w fpsie na przykład możesz mieć jeden wątek główny - przygotowujący dane i wysyłający je do karty graficznej, jeden odpowiedzialny za fizykę i jeden za AI
poza tym w ogóle nie wiem czy autor wie chociaż co to jest wątek i do czego może służyć, skoro chce go uruchamiać co x sekund :|