Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无限循环的C#异步_C#_Multithreading_Asynchronous_Async Await - Fatal编程技术网

无限循环的C#异步

无限循环的C#异步,c#,multithreading,asynchronous,async-await,C#,Multithreading,Asynchronous,Async Await,我有一个进程,它连接到主机并无限地检查是否有新数据要处理 我的应用程序有近500个线程,每个线程在一个无限循环中运行 代码如下: for(i=1; i<=500; i++) { Thread instanceCaller = new Thread(new ThreadStart(infiniteProcess)); instanceCaller.Start(); } >(i=1;i)当你进入上百个线程时,你应该考虑用异步IO和异步等待替换阻塞。很多线程导致高内存使用和OS调

我有一个进程,它连接到主机并无限地检查是否有新数据要处理

我的应用程序有近500个线程,每个线程在一个无限循环中运行

代码如下:

for(i=1; i<=500; i++)
{
   Thread instanceCaller = new Thread(new ThreadStart(infiniteProcess));
   instanceCaller.Start();
}

<代码> >(i=1;i)当你进入上百个线程时,你应该考虑用异步IO和异步等待替换阻塞。<强>很多线程导致高内存使用和OS调度开销。< /强> < /P> 首先尝试删除阻塞最长的调用。应用80-20原则。不必完全异步。

也就是说,与这么多线程相关的开销通常被高估了。如果完全异步,代码不会突然变快2倍。异步实际上只会改变操作的启动和结束方式。操作本身(IO或等待)根本不会加速

此外,异步不会增加容量。CPU不会变得更快,数据库无法处理更多操作,网络也有固定的吞吐量。异步IO实际上是为了节省内存和调度开销


你不会用500个线程来命中OS极限。我最近在使用TestLimest.EXE的时候在我的机器上创建了100000个线程,没有太多的麻烦。限制是非常高的。

< P>当你进入上百个线程时,你应该考虑用异步IO和异步等待替换阻塞。<强>很多线程导致高内存使用。操作系统调度开销。

首先尝试删除阻塞最长的调用。应用80-20原则。不必完全异步。

也就是说,与这么多线程相关的开销通常被高估了。如果完全异步,代码不会突然变快2倍。异步实际上只会改变操作的启动和结束方式。操作本身(IO或等待)根本不会加速

此外,异步不会增加容量。CPU不会变得更快,数据库无法处理更多操作,网络也有固定的吞吐量。异步IO实际上是为了节省内存和调度开销


你不会用500个线程来命中OS极限。我最近在使用TestLimest.EXE的时候在我的机器上创建了100000个线程,没有太多的麻烦。限制是非常高的。

< P>当你进入上百个线程时,你应该考虑用异步IO和异步等待替换阻塞。<强>很多线程导致高内存使用。操作系统调度开销。

首先尝试删除阻塞最长的调用。应用80-20原则。不必完全异步。

也就是说,与这么多线程相关的开销通常被高估了。如果完全异步,代码不会突然变快2倍。异步实际上只会改变操作的启动和结束方式。操作本身(IO或等待)根本不会加速

此外,异步不会增加容量。CPU不会变得更快,数据库无法处理更多操作,网络也有固定的吞吐量。异步IO实际上是为了节省内存和调度开销


你不会用500个线程来命中OS极限。我最近在使用TestLimest.EXE的时候在我的机器上创建了100000个线程,没有太多的麻烦。限制是非常高的。

< P>当你进入上百个线程时,你应该考虑用异步IO和异步等待替换阻塞。<强>很多线程导致高内存使用。操作系统调度开销。

首先尝试删除阻塞最长的调用。应用80-20原则。不必完全异步。

也就是说,与这么多线程相关的开销通常被高估了。如果完全异步,代码不会突然变快2倍。异步实际上只会改变操作的启动和结束方式。操作本身(IO或等待)根本不会加速

此外,异步不会增加容量。CPU不会变得更快,数据库无法处理更多操作,网络也有固定的吞吐量。异步IO实际上是为了节省内存和调度开销



500个线程不会达到操作系统的限制。我最近使用testlimits.exe在我的机器上创建了100000个线程,没有太多麻烦。限制真的很高。

为什么需要500个这样的线程?如果你使用工作队列之类的东西,只使用一手线程,你会得到改进……你的性能命中率是just由于线程的数量太多,而且都在一个循环中,我不明白为什么这是您唯一可用的选项,如果线程以侦听器的身份运行,您不能使用事件来代替线程吗?@user1071777-您是指一些名为user1071776的用户吗?@HenkHolterman区别在于它们有一个代表。为什么您会这样做ed 500个这样的线程?如果你使用一个工作队列和一把线程,你会得到一个改进……你的性能下降仅仅是因为线程的数量太多,而且都在一个循环中,我不明白为什么这是你唯一可用的选项,如果线程是一个循环,你能不能用事件来代替线程使用侦听器容量进行CTI?@user1071777-你是说一些名为user1071776的用户?@Henkholtman区别在于他们有1个代表。为什么你需要500个这样的线程?如果你使用工作队列和满满一手线程之类的东西,你会得到改进……你的性能下降完全是由于麻木对于线程和循环中的所有线程,我不明白为什么这是您唯一可用的选项,如果线程以侦听器身份运行,您不能使用事件来代替线程吗?@user1071777-您是指一些名为user1071776的用户吗?@HenkHolterman区别在于它们有1个代表。为什么