我有一個過程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是的,有可能會發生。 –