中文QNX 讨论: 欢迎大家灌水,讨论有关QNX 问题。
-
fanweik
- New Member
- 帖子: 6
- 注册时间: 周五 5月 29, 2009 8:29 pm
帖子
由 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()所发送的数据区,那你当然需要自行加同步保护...