我在网关上有一个网络应用程序。它接收和发送数据包。对于其中的大多数,我的网关充当路由器,但在某些情况下,它也可以接收数据包。c linux多线程联网
我应该有:
- 只有一个主线程
- 一个主线程+负责给它正确的流处理器
- 尽可能多的线程调度线程,因为有流动
- 别的东西。
?
我在网关上有一个网络应用程序。它接收和发送数据包。对于其中的大多数,我的网关充当路由器,但在某些情况下,它也可以接收数据包。c linux多线程联网
我应该有:
?
我不知道很多关于物联网应用,但我认为是这样的:
您的情况听起来很像典型的Unix服务守护进程。解决问题的流行方法不是使用线程,而是使用分支。
这个想法是你的程序在套接字上侦听并等待连接。一旦连接到达,它就会分叉。子进程然后继续处理连接。父进程本身只是在循环中继续并等待传入连接。
优势在穿线:
缺点:
件你可以找到许多代码示例在线。
我的个人偏好是每个连接使用一个主线程和一个工作线程。没有任何帽子。我假设你的服务器像HTTP服务器一样是无状态的。
对于有状态的服务器,你将不得不找出一些方法来控制线程数量。
如果你不想学习Unix网络编程(如果它不是你的意图并编写自己的代码),你可以使用一些库的帮助。看看ENet(http://enet.bespin.org/)。您可以在这里阅读更多关于它的信息:http://www.linuxjournal.com/content/network-programming-enet(来自文本:这意味着您不必担心分叉,预编译,线程或非阻塞调用的复杂性连接()和接受()以处理多个连接。) –