I는 시나리오가있다.시스템 V는
2 : Writer 프로세스가 판독기 프로세스보다 빠르다. 예를 들어 작성자 프로세스가 판독기 프로세스가 메시지를 읽고 큐를 비우는 것보다 빠르게 큐에 메시지를 쓰는 경우 (예 : 큐에 8 개의 메시지가있는 경우)) 그리고 리더 프로세스는 아직 큐에 9 번째 메시지를 쓰려고하는 writer 프로세스 (msgsnd)에서 하나의 메시지를 읽지 않습니다.
3 : 내 메시지가 덮어 쓰여지면 어떻게됩니까?
4 : 대기열에있는 마지막 또는 첫 번째 메시지를 덮어 쓰게됩니까?
5 : 전체 큐를 덮어 쓰시겠습니까?
6 : 그렇지 않으면 9 번째 메시지가 손실됩니까?
7 : 어떻게 이런 시나리오가 발생하지 않고 새로운 들어오는 메시지가 풀리지 않으며 기존 메시지를 덮어 쓰지 않게하려면 어떻게해야합니까?
8 :이 상황을 어떻게 처리 할 수 있습니까?
점 3에 대해감사
고마워요. 그래도 작성자 프로세스가 쓰는 버퍼 큐를 사용하고 버퍼 큐에서 메시지 큐에 메시지를 복사해도 어떻게하면이 세 프로세스의 속도를 제어 할 수 있습니까? – indranil
IPC_NOWAIT 플래그없이 큐를 생성하면 msgsnd는 실패 (-1 반환)하고 errno는 EAGAIN으로 설정됩니다. 그러면 대기열이 가득 차고 적어도 하나를 추출 할 때까지 다른 메시지를 추가 할 수 없다는 것을 알려줍니다. –
답장을 보내 주셔서 감사합니다. – indranil