메일 블럭, 논블럭 .. 뭐가 좋을 지...

익명 사용자의 이미지

안녕하세요

저는 메일 포워딩 데몬은 만지고 있습니다.
구성은

메일 -> 메일 포워딩 데몬 -> 메일 서버

이런 형식입니다. 즉 메일 포워딩 데몬에서 필요한 걸 수행한 다음에
메일 서버로 보내는 건데요.

가끔 많은 메일을 보내면 '메일 포워딩 데몬'을 거치지 않고 곧바로
메일 서버로 가는 경우도 있습니다.

저는 메일 포워딩 데몬 소스를 blocking 을 바꿨습니다.
아래와 같이요..

112 int flag = (~O_NONBLOCK) & fcntl(sd, F_GETFL);
113 fcntl(sd, F_SETFL, flag);

그랬더니 아직까진 그냥 통과되는 메일은 없더군요..
근데 이런 문제들이 정말로 blocking , noblocking 에 관련된 문제인지.
또 blocking 으로 설정했을때 나타나는 최악의 시나리오는 무엇인지
궁금합니다.

익명 사용자의 이미지

블럭의 문제점이라는 건... 말 그대로, 블록입니다. -_-;;;

데이터가 올 때 까지 한 없이 기다린다는 거죠. 특히, 단일 스레드

라면 다른 작업을 전혀 못하므로 문제가 되겠죠.

하지만, 데이터를 받아야만 활동을 하는 작업이라면,

별문제 없을 듯합니다. 그럼 고운 하루...

ps. 솔직히 MFC 의 CSocket은 블록킹 소켓인데, 논블록킹을

데이터가 올 때까지 무한히 계속하는 것로 구현되어 있습니다.