请问论坛各位,
如果现在有N个线程同时调用mq_send或MsgSend向另一线程发送消息,我需要在这N个线程中在发送消息前加入同步代码吗?如下的伪代码所示,
Enter Crtical Section
mq_send(…)/MsgSend(…)
Leave Critical Section
谢谢
请问论坛各位,
如果现在有N个线程同时调用mq_send或MsgSend向另一线程发送消息,我需要在这N个线程中在发送消息前加入同步代码吗?如下的伪代码所示,
Enter Crtical Section
mq_send(…)/MsgSend(…)
Leave Critical Section
谢谢
教你一个办法,如何判断 "xx 函数是不是需要同步”。可以去QNX的文档,查你想要找的函数,在函数解说的最后会有一个"Safety"表,告诉你这个函数在哪里用是安全的。如果一个函数是Thread Safe的,就说明它不需要同步(可重入)。
所以mq_send是不需要同步的。
当然这只是就函数本身而言。如果你的程序里,比如有两个线程都会读写 mq_send()所发送的数据区,那你当然需要自行加同步保护…