V IPC 메시지 큐 다뤄 보신 분 조언 좀 해주세요.
글쓴이: kknd345 / 작성시간: 목, 2005/09/29 - 1:53오후
여러 프로세스가 메시지 큐를 이용해서 대화를 하는 채팅 프로그램을 만들려고 합니다.
어느 정도 메시지큐에 대한 내용을 이해를 하고 알고리즘을 짤려고 하는데 기본적인 생각부터 막히네요.
처음에 msgget을 이용해서 하나의 메시지 큐를 만들잖아요
그 메시지큐는 여러 프로세스에 의해 공유가 되고 있는 상황인데 어떤 한 프로세스가 메시지를 날리기 위해 메시지큐에 내용을 넣으면 다른 한 프로세스가 그 메시지를 가지고 가면 큐에서 그 메시지가 없어지잖아요. 그럼 나머지 프로세스는 대화 내용을 못 보는데 이 부분 어떻게 해결 하나요?
처음에는 프로세스 수 만큼 메시지큐에 적으면 되지 않을까 생각했는데... 그것도 프로세스가 경쟁모드로 가져가면 한 프로세스가 같은 내용을 두번 가져갈수도 있기 때문에 바람직 하지 않은거 같고..
도대체 어떻게 해결해야 할지 모르겠네요 ㅜㅜ...
조언 좀 해주세요~
Forums:
sharedmemory와 counting semaphore정도면 처리되지
sharedmemory와 counting semaphore정도면 처리되지 않을까요?
메시지큐
저도 한때 메시지큐를 이용해서 채팅프로그램을 만든 적이 있지요..
결론부터 말하자면 메시지큐를 쓰지 않는 것이 좋습니다.
당시 성능이 만족스럽지 못했습니다. (solaris x86 2.6)
한표
msgsnd쪽에서 보낼때 msgtype을 지정해주고msgrcv하는 쪽
msgsnd쪽에서 보낼때 msgtype을 지정해주고
msgrcv하는 쪽에서 자기만의 유일한 msgtype 을 받는걸로 지정해볼수 있지 않나요?
greedy 알고리즘
메시지 큐를 peek해서 볼 수 있습니다.메시지큐 구조체를 정의할
메시지 큐를 peek해서 볼 수 있습니다.
메시지큐 구조체를 정의할 때,
구조체 멤버 젤 처음에
long 을 선언하게 됩니다. (long mtype;)
요 값은 메시지 큐에서 값을 가져오지 않고도
엿볼수(peek) 있습니다.
자세한 방법은 msgrcv 함수를 검색해 보세요.
처음으로 답변을 달아 보는 거라.... 좀 떨리(?)네요.^^
댓글 달기