gpt4 book ai didi

c# - 异步线程 tcp 服务器

转载 作者:可可西里 更新时间:2023-11-01 02:33:20 25 4
gpt4 key购买 nike

我想用 C# 创建一个高性能服务器,它可能需要约 10k 个客户端。现在我开始用 C# 编写一个 TcpServer,并为每个客户端连接打开一个新线程。我还使用一个线程来接受连接。到目前为止一切顺利,工作正常。

服务器必须反序列化 AMF 传入对象执行一些逻辑(如保存播放器的位置)并发回一些对象(序列化对象)。我不担心序列化/反序列化部分 atm。

我主要担心的是我会有很多线程和 10k 个客户端,而且我在某处读到一个操作系统只能容纳几个线程。

是否有关于编写像样的异步线程服务器的资源/文章?是否还有其他可能性或 10k 线程是否可以正常工作?我查看过谷歌,但我找不到太多关于设计模式或清楚解释它的方法的信息

最佳答案

你会遇到很多问题。

  1. 出于几个原因,您无法启动 10,000 个线程。它会破坏内核调度程序。如果您正在运行 32 位,那么默认的 1MB 堆栈地址空间意味着 10k 线程将保留大约 10GB 的地址空间。那会失败的。

  2. 您也不能使用简单的选择系统。从本质上讲,select 的套接字数量为 O(N)。对于 10k 套接字,这很糟糕。

  3. 您可以使用 IO 完成端口。这是他们设计的场景。据我所知,没有稳定的托管 IO 完成端口库。您必须使用 P/Invoke 或托管 C++ 编写自己的代码。玩得开心。

关于c# - 异步线程 tcp 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com