mq_send는 원자가입니까?
-
10-07-2019 - |
문제
multhread 프로그램이 mq_send를 실행하는 동안 SIGSTOP 신호를 받으면 어떤 일이 발생하는지 말해 줄 수 있습니까?
해결책
남자 페이지 mq_send
위에 구현되었음을 나타냅니다 mq_timedsend
, Linux의 시스템 호출입니다. 시스템 호출은 일반적으로 성공하거나 그렇지 않다는 점에서 원자입니다. 시스템 호출이 신호에 의해 중단되면 일반적인 동작은 -1을 반환하고 설정하는 것입니다. errno
에게 EINTR
. 보입니다 mq_send
이 행동이 있습니다.
기본적으로 확인해야합니다 EINTR
, 이런 식으로 실패하면 전화를 다시 시도하십시오. 이것은 다음과 같이 차단할 수있는 시스템 호출에 특히 중요합니다. recv
또는 select
, 그들은 중단 될 가능성이 높기 때문에.
제휴하지 않습니다 StackOverflow