안녕하세요.
게임서버 제작중인데...
thread를 1:1구조로 만들면 상당히 간단하지만,
너무나도 잡아먹는 리소스와 gc처리등의 문제 때문에...
thread pool을 사용해야할 것 같습니다.
thread pool을 제한값을 10이라고 했을때,
클라가 100이라고 가정했을때,
100명이서 쓰레드 10개를 사용할 때, 우선순위(랜덤, 누가 먼저될지는 모르는...)를 가지는 10명이 먼저돌고
나중순위는 남은 90명 중 누군가가 우선순위를 잡고 사용할 것입니다.
이 부분에서는 예상인원대비 쓰레드풀 max를 잘 잡는게 가장 효율적인 서버가 될 것이고요...
근데 여기서 문제입니다.
쓰레드가 1,2,3...10까지... 10개...있고...
클라가 20명이 접속해 있는데... 1, 2, 3~20...
클라 1, 11는 쓰레드 1을 사용하고 잇고
클라 2, 22는 쓰레드 2를 사용하고 잇습니다....
그러면...
1, 2와 1vs1을 진행할때는 동기화 문제가 생기지 않을테지만...
1, 11이 1vs1의 게임을 진행할때는... 동기화 문제가 생길겁니다...
왜냐면 참조변수?의 이름이 다른 쓰레드 영역에서는...
변수명이 같아도... 다른 영역에서 서로 존재하니까요... 맞나요???
해보니... 그런것 같습니다..
위에 말씀 드린 이유는 동기화 때문입니다...
동기화를 하지 않으려면...
어떻게 처리해야할까요???
이게 알듯 말듯하면서... 사람 미치게 하는 뭔가가 있는거 같네요...
해결방법 아시는 분께서는...
답변 부탁드려요...
술을 마시고도... 이것때문에 잠을 못자네요... 낼 출근해야하는데... ㅋㅋㅋ
역시 게임서버 만드는게 쉬운게 아니었네요...
가장 큰 문제가... 메모리 및 GC, 동기화(동기화 해주면되는데.. 속도때문에... 왠만하면 안하려는...)
인것 같네요...
꼭 이 것만이 아니라도... 많은 조언 부탁드릴게요...
술마셔서 두서없이 적었는데...
고수님들이시기 때문에 제가 원하는게 무엇인지 아실거라고 생각합니다...
모두 너무나 감사드립니다~~~
좋은 밤 되시고요~~
낼 뵙겠습니다~~~