지금은 (단지 학습 목적으로) 서버 클라이언트 응용 프로그램에서 작업 중이며이 응용 프로그램의 스레드에 관한 디자인 결정을 내리는 데 필요한 정보를 얻으려고합니다.여러 스레드 대 단일 스레드
현재 클라이언트와 함께 모든 비 차단 io를 담당하는 스레드가 하나 있습니다. 어떤 데이터를 받으면, 그것들은 그 바이트들로부터 "명령 세트"를 생성하는 워커 쓰레드로 보내고, 그에 따라 그에 따라 행동한다. 그러나 명령 집합에 따르면 수없이 많은 개체 (각 개체는 상호 작용할 수있는 2 ~ 12 개의 클라이언트 사이에 모자를 씌움)에서 작동 할 수 있습니다. 모든 명령 집합을 동일한 스레드에서 처리해야하는지, 그냥 각 블록 집합을 처리하는 동안 또는 내가 각 개체에 대해 별도의 스레드를 만들고 각받은 명령 집합을 주어진 객체는 처리를 위해 쓰레드이다.
제 질문은 모든 데이터를 처리하는 하나의 작업자 스레드 (및 각 명령을 처리하는 동안 블록)를 사용하는 것과 비교할 때 시스템을 느리게하는 데이터를 기다리는 비활성 스레드가있는 시점을 말합니다 세트).
각 개체에 대해 별도의 스레드를 만든 경우 주 작업자 스레드가 명령 집합을 만들면 병행 성을 높일 수 있다고 생각합니다. 처리 할 수 있도록 전달하고 imeditally 다음 작업을 시작합니다. 명령어 세트.
그러나 OS가 스레드를 관리하고 관리해야하기 때문에 쓰레드를 만들고 관리하는 데 비용이 많이 듭니다. 그래서 만약 내가 2 개의 클라이언트가 상호 작용할 수있는 객체를위한 스레드를 생성했다면, 그것을 관리하는 기본 비용이 동시적인 이익을 무효로 할 것이고, 단지 2 개의 클라이언트 만이 동시성을 이용할 수있을 것입니까?
은 언제나, 어떤 조언/기사 크게 감사합니다 :)
이것은 내가 상상했던 것보다 훨씬 더 우아한 해결책입니다. 고마워 :) – vimalloc