我有一个过程ProcessA启动2个线程的ThreadA和ThreadB一个套接字上发送的Recv。这两个线程都使用相同的套接字描述符发送和接收来自ProcessB的数据。从多个线程
所以基本上:
int s;
void thread_fnA(void*)
{
while(1) {
sendto(s);
recvfrom(s);
}
}
void thread_fnB(void*)
{
while(1) {
sendto(s);
recvfrom(s);
}
}
int main()
{
s = socket(AF_UNIX, SOCK_DGRAM, 0);
bind(s);
dispatch_thread(A);
dispatch_thread(B);
}
是否有由线程B接收的消息可能在线程A接收的可能性
因此事件序列:
线程A准备消息并调用sendto();
线程B开始执行并准备消息并调用sendto();
线程B调用recvfrom的()与螺纹A.
然而,通过两个线程预期消息内容是不同的同时进行。 是否可以交换消息,由ThreadA接收ThreadB指定的消息。
发送和接收是否应该参与某些锁定。 (互斥)
所以你的意思是这些信息可能被误放。 – Haswell
@Haswell是的,有可能会发生。 –