同时发送数据包

时间:2018-07-18 03:13:10

标签: c multithreading sockets

我是C语言的新手,想了解多线程如何与套接字一起工作。

我了解如何创建线程,但不了解它们在这种情况下如何工作。

两个线程同时接收数据包。 当第一个线程进入receiveData函数并进行recvmsg()调用时,第二个线程是否会被阻塞,直到第一个线程接收到数据包并退出receiveData函数?

是否有某种方法可以防止其他线程被阻塞?

String activityName = "trackingActivity.class";
Intent intent = new Intent(this, activityName);
startActivity(intent);

1 个答案:

答案 0 :(得分:1)

当您有两个这样的独立套接字时,它们是独立的-第一个线程将阻塞直到其套接字上的数据可用为止,第二个线程将阻塞直到其套接字上的数据可用为止。如果数据到达一个套接字而不是另一个套接字,则在到达数据的套接字上阻塞的线程将解除阻塞(recv将返回)并循环直到没有更多数据可用为止。如果数据到达两个套接字,则两个线程将继续循环。