멀티쓰레드 소켓 서버 구현한다고 매일매일 개뻘짓의 연속인데요.

지금 이런식이거든요

t1 = new 쓰레드(server_run)

...

server_run()
{
Socket soc = accept()
ClientManager client(soc) // 접속된 클라이언트 소켓 정보로 클래스를 하나 구성하고
client.startclient()              //  클래스 내부에 있는 수신/발신 쓰레드를 run
해쉬테이블(아이디, client); // 클래스는 해쉬테이블에 클라이언트의 아이디로 넣는다.
}

endserver()
{
foreach(해쉬테이블에서 아이디로 다 불러와서)
{
        해당 아이디 ClientMannager 객체를 가지고 
        endclient() 메소드 실행. (endclient = 쓰레드 Abort())

}

....

Class ClientManager{
        startclient_Run()
        {
            ctThread = new Thread(clientThread_Run);            ctThread.IsBackground = true;            ctThread.Start();
        }
        clientThread_Run()
        {
                이제 비동기 로 receive 시작하는데... ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
        }

        endclient()
        {
                ctThread.Abort();
        }
}


이런 구조 존나 병신이죠?

아 처음 해보는거라 이건 아닌데 싶으면서도 계속 하고 있음 ㅠㅠㅠㅠ

조언 좀 해주시면 안될까요 ㅠㅠ 멀티쓰레드 서버를 어떻게 구상해야할지 감이 안와요 ㅠ