c linuxmultithreading联网【JAVA教程】

!
也想出现在这里? 联系我们
信息

c linuxmultithreading联网,第1张

概述c linuxmultithreading联网

我在网关上有一个networking应用程序。 它接收和发送数据包。 对于其中大多数,我的网关作为一个路由器,但在某些情况下,它也可以接收数据包。

我应该有:

只有一个主线程

一个主线程+一个调度线程负责将其提供给正确的stream程处理程序

与stream量一样多的线程

别的东西。

等待networkingconfiguration在windows服务启动完成

如何在内核模块中将networking接口设置为混杂模式?

从套接字读取失败:连接重置由peer

DNS查询function,区分不存在的主机和networking错误

当我有足够的端口时为什么\’没有可用的缓冲空间\’错误?

在Ubuntu上访问smbfs的cfdirectory奇怪的问题

在linux上使用Java 6,我该如何确保使用一个ipv4套接字?

Oracle XE不绑定在IP4端口1521上

获取每个连接的带宽统计

IPv6链接本地地址格式

正确地执行多线程并不是一件简单的事情,在许多情况下,基于选择和基于朋友的解决方案将更容易创建。

你的情况听起来很像一个典型的Unix服务守护进程。 您的问题的流行解决方案不是使用线程,而是分叉。

这个想法是你的程序监听套接字并等待连接。 一旦连接到达,它叉。 子进程然后继续处理连接。 父进程本身只是在循环中继续,并等待传入​​的连接。

线程优势:

非常简单的程序设计

没有并发问题

建立Unix / linux系统的方法

缺点:

当几个连接互相影响时,情况会变得复杂(你的用例听起来不像)

在windows系统上的性能损失(不在Unix系统上!)

你可以在网上找到很多代码示例。

我对网络应用程序不太了解,但是我认为它是这样的:

如果你有能力反应异步的请求,你可能会使用一个单一的线程(如Node.Js)。 如果你不能反应异步主线程总是会阻止其他行动。

如果你不能对你的请求反应异步,你必须使用多个线程。 但是,您可以通过许多不同的方式实现这一点:您可以为每个请求创建一个线程或有限数量的线程,然后将其分配给您的请求。

我个人偏好是每个连接使用一个主线程和一个工作线程。 没有任何帽子。 我假设你的服务器像http服务器一样是无状态的。

对于有状态的服务器,你将不得不找出一些方法来控制线程的数量。

总结

以上是内存溢出为你收集整理的c linuxmultithreading联网全部内容,希望文章能够帮你解决c linuxmultithreading联网所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞138 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容