mq_send和MsgSend的同步问题

中文QNX 讨论: 欢迎大家灌水,讨论有关QNX 问题。
回复
fanweik
New Member
帖子: 6
注册时间: 周五 5月 29, 2009 8:29 pm

mq_send和MsgSend的同步问题

帖子 fanweik » 周三 3月 02, 2011 11:01 pm

请问论坛各位,
如果现在有N个线程同时调用mq_send或MsgSend向另一线程发送消息,我需要在这N个线程中在发送消息前加入同步代码吗?如下的伪代码所示,

Enter Crtical Section

mq_send(...)/MsgSend(...)

Leave Critical Section

谢谢

xtang
Moderator
帖子: 1816
注册时间: 周五 9月 12, 2003 4:14 am
来自: China

帖子 xtang » 周日 3月 27, 2011 2:50 pm

教你一个办法,如何判断 "xx 函数是不是需要同步”。可以去QNX的文档,查你想要找的函数,在函数解说的最后会有一个"Safety"表,告诉你这个函数在哪里用是安全的。如果一个函数是Thread Safe的,就说明它不需要同步(可重入)。

所以mq_send是不需要同步的。

当然这只是就函数本身而言。如果你的程序里,比如有两个线程都会读写 mq_send()所发送的数据区,那你当然需要自行加同步保护...

回复