메시지큐 기반의 IPC 를 이용해서 대여섯개의 프로세스가 서로 통신을 하는 프로그램을 만들고 있습니다. 이 프로세스는 거의 멀티스레드 입니다. 현재 디버깅중인데.. 과연 메시지큐는 Thread Safe 한가 하는 의문이 생겨서 이렇게 자문을 구합니다. 경험해보신분 계시면 경험담을 좀 올려 주세요. 감사합니다.
넹.. 아무래도 message queue를 다룰 때는 system call을 사용하므로 thread-safe 하겠죠..
쓰레드 safe 여부는 해당 플랫폼의 쓰레드 라이브러리 매뉴얼을 보시면 확인하실 수 있습니다.
예를 들면 crypt 같은 함수는 호출구조 자체가 unsafe하기 때문에 crypt_r이라는 safe함수가 별도로 존재합니다.
재미있는 것은 이런 식으로 함수 호출구조를 변경시킨 것도 있는 반면에 아예 crypt의 리턴 값을 TSD(Thread Specific Data)로 두어서 지원하는 케이스도 간혹 있습니다.
김성진 드림
고도의 추상화, 극도의 구체화, 에디슨을 그리워하다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
넹.. 아무래도 message queue를 다룰 때는 system cal
넹.. 아무래도 message queue를 다룰 때는 system call을 사용하므로
thread-safe 하겠죠..
쓰레드 safe 여부는 해당 플랫폼의 쓰레드 라이브러리매뉴얼을 보시면
쓰레드 safe 여부는 해당 플랫폼의 쓰레드 라이브러리
매뉴얼을 보시면 확인하실 수 있습니다.
예를 들면 crypt 같은 함수는 호출구조 자체가
unsafe하기 때문에 crypt_r이라는 safe함수가 별도로 존재합니다.
재미있는 것은 이런 식으로 함수 호출구조를 변경시킨 것도 있는 반면에
아예 crypt의 리턴 값을 TSD(Thread Specific Data)로 두어서
지원하는 케이스도 간혹 있습니다.
김성진 드림
고도의 추상화, 극도의 구체화, 에디슨을 그리워하다.
댓글 달기