2010-04-20 6 views
4

의미 the C10K problem, Mac OS X에서 비동기 I/O를 수행하는 가장 좋은 방법은 무엇입니까 (Mac 및 iPhone/iPad에서 사용한다고 가정)?Mac OS X의 비동기 입출력

Linux에서 우리의 선택은 입니다. epoll, Windows의 경우 입출력 포트입니다.

성능 및 확장 성 (수천 개의 연결)이 가장 중요합니다.

UPDATE

확인을 클릭합니다. Darwin은 BSD 계열 시스템이므로, 내 공통된 생각은 kqueue을 사용하는 것입니다. 이것이 올바른 방향입니까? 이 분야에서 경험이 많은 사람의 이야기를 듣는 것이 좋을 것입니다.

감사

+0

iPhone에 C10K 서버를 원하십니까? – Potatoswatter

+0

아니요 :-) 아이폰과 호환되도록 만들어야합니다. 우리 도서관에는 클라이언트와 서버가 모두 포함되어있어 클라이언트는 iPhone에서 사용할 수 있습니다. – stas

답변

1

당신이 libev를 사용하는 경우, 당신은 구현 세부 사항에 대한 걱정없이 호환 비동기 IO 백엔드 (는 epoll, kqueue, 선택 등)의 다양한 사이를 전환 할 수 있습니다.

http://software.schmorp.de/pkg/libev.html

+2

... 그리고 당신은 부스트로 당신의 응용 프로그램을 부풀게하지 않을 것입니다 :) –

3

Boost.Asio 라이브러리 네트워킹 훌륭한 크로스 플랫폼, 고성능, C++입니다. Mac OS X에서는 반응기 이벤트 루프에 kqueue를 사용하고 다른 플랫폼에서는 epoll, I/O 완료 포트, 폴링 또는 select를 사용합니다. 문제없이 수천 개의 연결로 확장 할 수 있습니다. 이름에서 알 수 있듯이 스레드를 사용하지 않고 동시성을 위해 프록터 디자인 패턴을 사용하여 비동기 프로그래밍을 촉진합니다.