Cześć piszę server dla graczy, który korzysta z bazy postgres. W dokumentacji znalazłem informację, że nie można forkować programu, przy otwartych połączeniach z bazą bo jest to niebezpieczne. Moim pierwszym pytaniem jest to czy mogę zrobić forka po podłączeniu się do gniazda i rozpoczęciu nasłuchu? Chodzi o to czy takie podejście jest bezpieczne. Jeżeli takie rozwiązanie jest bezpieczne to w moim mniemaniu program wyglądał by mniej więcej tak:
- Rozpoczęcie nasłuchu na gnieździe.
- fork() razy powiedzmy 10 albo więcej.
- Stworzenie listy np 20 połączeń do bazy.
- Funkcja accept() i pobranie soceta łączącego się klienta.
- Tworzenie nowego wątku dla połączonego klienta.
- Opakowanie wątków i listy połączeń do bazy semaforem uogólnionym powiedzmy do 12 lub 14.
Czytałem, że ilość wątków w procesie nie powinna przekraczać 16. Co myślicie o takim podejściu? Zastanawiam się czy nie przekombinowałem. Może macie jakieś inne pomysły?