sys/msg.h 사용 시 멀티스레드 관련

anylove20의 이미지

안녕하세요

현재 스레드간의 통신을 위해 sys/msg.h 메시지 큐를 이용하고 있습니다.

문제는 여러 스레드에서 msgsnd() and msgrcv() 함수를 호출하는데요.

두 함수들이 thread safe 하다는 얘기는 어디에도 나와있지 않던데...

혹시 문제가 될수 있는지요.

두번째 질문은 위와 같은 상황에서 가끔 msgsnd() and msgrcv() 함수 호출 시 errno=22(Invalid Argument)가 발생하는데요

이건 메시지 구조체가 잘못되서 나는 에러인지요

이런 에러가 정말 가끔씩 발생해서 메시지 구조체에 문제가 있다는 생각은 안들어서요

참고로 메시지 구조체는

typedef union
{
char type[4];
void *ptr;
}MsgBuf;

입니다.

메뉴얼을 보면 mtype 으로 long형을 쓰던데. 많은 예제들이 꼭 그렇게만 쓰는건 아닌거 같더라구요

뭐가 문제일까요??

답변 부탁드립니다.