请问C#能分配多少个线程? 现在的CPU一般都支持超线程吧?最多能分配多少个线程?利用别的核心计算是不是效果会更好?同时计算9个线程会不会计算量很多呢?这些问题很伤脑筋还有万一有个很老的电脑在运行你的程序该怎么办呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果1个线程就占用100% cpu的话,不用开太多个线程了。两个,一个UI,一个Worker thread. 是否可以这样 先检测CPU有几个核心核心多的话 先分配核心 让线程平均分配些 线程你得分情况。计算密集型的应用,就一个核心一个线程。瓶颈不在CPU的话,线程多也一样,比如扫描局域网的程序,单核CPU开10线程和100线程,CPU也不是爆满。 单核CPU开10线程和100线程,CPU也不是爆满你是说效果都一样 都是爆满是吧 多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能。直接创建Thread对象,并且调用它的Start方法使用ThreadPool.QueueUserWorkItem方法使用BackgroundWorkerParallel.For - for 循环的并行运算 Parallel.ForEach - foreach 循环的并行运算 Parallel.Invoke - 并行调用多个任务 Task - 任务,基于线程池。PLINQ - 用于对内存中的数据做并行运算 我分配过1000个,双核CPU。用的循环1000次。系统反映速度稍微慢了些。 -------------你说的没错,可是现在是多核CPU时代了,线程在不同的核心运行,程序运行的速度必然会加快 和c#无关,一个进程可以创建255个线程,包括ui线程。线程不是越多越快,就一个cpu的话,大量计算工作一般不分线程处理,线程调度需要时间,线程的目的是有效的利用线程的闲时做其他事情。 我记得2.0下,大概就是255这个数。但是.NET并不做特别限制,可以突破这个书目,如下: ThreadPool.SetMaxThreads(350, 350);由于你自起的线程在后台也会放入池中,所以上面的代码就可以达到突破这个限额。不过,问题的关键是,如果你程序含那么多线程,估计就得考虑下是否设计合理 线程可以开N多。只要你的cpu承受的了 自己定义的空间引用说找不到 C# winfrom 发送邮件 两个问题??在线等待。。。急!!! 如何获取Sql语句中的参数列表 DataGridViewCheckBoxColumn获得选中状态 请大家帮忙,排列组合价格最低问题 今天终于放假了,开心,散分....... C#与ASP.NET之间的联系! 批量数据库操作的连接池问题 如何用DataSet更形数据库? c# socket TCP/IP 请教 COM+注册工具
两个,一个UI,一个Worker thread.
核心多的话 先分配核心 让线程平均分配些
你是说效果都一样 都是爆满是吧
多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能。
直接创建Thread对象,并且调用它的Start方法
使用ThreadPool.QueueUserWorkItem方法
使用BackgroundWorker
Parallel.For - for 循环的并行运算
Parallel.ForEach - foreach 循环的并行运算
Parallel.Invoke - 并行调用多个任务
Task - 任务,基于线程池。
PLINQ - 用于对内存中的数据做并行运算
系统反映速度稍微慢了些。
你说的没错,可是现在是多核CPU时代了,线程在不同的核心运行,程序运行的速度必然会加快
和c#无关,一个进程可以创建255个线程,包括ui线程。
线程不是越多越快,就一个cpu的话,大量计算工作一般不分线程处理,线程调度需要时间,线程的目的是有效的利用线程的闲时做其他事情。
我记得2.0下,大概就是255这个数。但是.NET并不做特别限制,可以突破这个书目,如下: ThreadPool.SetMaxThreads(350, 350);由于你自起的线程在后台也会放入池中,所以上面的代码就可以达到突破这个限额。不过,问题的关键是,如果你程序含那么多线程,估计就得考虑下是否设计合理