select로 블록킹된 여러개의 fd에서 동시에 이벤트가 발생되드라도 select이후의 과정에 fork나 thread를 넣드라도 결국 순차적으로 돌아가게 됩니다...
FD_ISSET으로 이벤트가 발생된 fd를 찾는다는 것은 아실테구요... 예를 들어 fd가 1,2,3이 있다고 가정했을때, 동시에 3개의 fd에서 이벤트가 발생할 확율은 거의 없습니다.. 있다고 하드라도 select이후에는 FD_ISSET으로 돌아가는 순차적으로 돌아가는... 님이 말씀하신 하나씩 일을 수행하져...
만약 동시에 일을 처리해야 될경우에는 하나의 select에 여러개의 fd를 blocking하지 않습니다...
3개의 fd가 있을 경우 첨부터 fork를 하든...thread를 만들던... 3개의 instance를 띄우고 각 instance 내에서 select를 만들어서 fd를 block하면 동시에 일을 처리할수 있져..
가능하긴 합니다.
select로 가져온뒤에 실제 작업을 하는 부분을 쓰레드나 fork()로 하시면 가능합니다. 간단한 잡이면 쓰레드로 구현하시는것도 나쁘진 않습니다.
========================================
* The truth will set you free.
select로 블록킹된 여러개의 fd에서 동시에 이벤트가 발생되드라도 s
select로 블록킹된 여러개의 fd에서 동시에 이벤트가 발생되드라도 select이후의 과정에 fork나 thread를 넣드라도 결국 순차적으로 돌아가게 됩니다...
FD_ISSET으로 이벤트가 발생된 fd를 찾는다는 것은 아실테구요... 예를 들어 fd가 1,2,3이 있다고 가정했을때, 동시에 3개의 fd에서 이벤트가 발생할 확율은 거의 없습니다.. 있다고 하드라도 select이후에는 FD_ISSET으로 돌아가는 순차적으로 돌아가는... 님이 말씀하신 하나씩 일을 수행하져...
만약 동시에 일을 처리해야 될경우에는 하나의 select에 여러개의 fd를 blocking하지 않습니다...
3개의 fd가 있을 경우 첨부터 fork를 하든...thread를 만들던... 3개의 instance를 띄우고 각 instance 내에서 select를 만들어서 fd를 block하면 동시에 일을 처리할수 있져..
도움되시길..
댓글 달기