开发者

Is mq_send atomic?

can anybody tell me what happens if multithread program receives SIGSTOP signal during execution of 开发者_StackOverflow中文版mq_send?


The man page for mq_send indicates it is implemented on top of mq_timedsend, which is a system call in Linux. System calls are generally atomic in that they either succeed or they don't. If a system call is interrupted by a signal, the usual behavior is to return -1 and set errno to EINTR. It looks like mq_send has this behavior.

Basically, you should check for EINTR, and retry the call if it fails in this way. This is particularly important for system calls that may block like recv or select, since they have a higher chance of being interrupted.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜