gpt4 book ai didi

multithreading - 潜在线程密集型应用程序中多个套接字的异步与同步套接字

转载 作者:行者123 更新时间:2023-12-03 11:53:17 25 4
gpt4 key购买 nike

我正在为Windows CE设备在Compact Framework 2.0上为我的公司编写一个相对较大的应用程序,并且正在使用单个CPU内核。

如果不进行详细介绍,与套接字无关的工作在最坏的情况下可以同时运行10个左右的线程。

考虑到这一点,除了在小型测试应用程序之外,我还是第一次使用套接字。这个更大的应用程序可能会与同一个IP地址上的7个不同端口通信(例如,明显的错误IP,1.2.3.4:4000、1.2.3.4:4001、1.2.3.4:4002等),因此使用了7个不同的端口套接字对象。

Compact Framework 2,1个CPU内核,在最坏的情况下,大约有10个非套接字线程,以及7个用于编程所有发送和连续接收(以处理/响应的方式)的套接字。

我一直在考虑异步套接字编程是否只会给我带来麻烦,对于Compact Framework 2.0,默认最大线程数是25(每个内核),实质上是我必须获得的“聪明”。

您有什么建议?异步或同步套接字编程,以及您建议的任何其他详细信息,或者如果我不担心的话。

最佳答案

由于您的设备肯定有有限的内存,并且由于.NET线程堆栈默认情况下会占用1MB的内存(已提交,而不仅仅是保留),我认为您应该使用异步IO,因为它不会阻塞线程。只有您的回调/继续会被发布到线程池中。线程池线程很少,因此由于堆栈而导致的内存使用率较低。

请记住,异步IO主要是不阻塞线程,从而节省了内存和OS句柄。这与降低CPU成本无关(根据我对网络IO的基准测试,情况恰恰相反)。

关于multithreading - 潜在线程密集型应用程序中多个套接字的异步与同步套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658315/

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