社区
C#
帖子详情
请问C#能分配多少个线程?
bios8086
2010-12-09 07:27:08
现在的CPU一般都支持超线程吧?最多能分配多少个线程?
利用别的核心计算是不是效果会更好?
同时计算9个线程会不会计算量很多呢?
这些问题很伤脑筋
还有万一有个很老的电脑在运行你的程序该怎么办呢?
...全文
1159
18
打赏
收藏
请问C#能分配多少个线程?
现在的CPU一般都支持超线程吧?最多能分配多少个线程? 利用别的核心计算是不是效果会更好? 同时计算9个线程会不会计算量很多呢? 这些问题很伤脑筋 还有万一有个很老的电脑在运行你的程序该怎么办呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bios8086
2010-12-10
打赏
举报
回复
开的线程会不会自动分到其他的核心上运行呢?
暖眸
2010-12-10
打赏
举报
回复
线程可以开N多。只要你的cpu承受的了
码农星球撸码J
2010-12-10
打赏
举报
回复
[Quote=引用 15 楼 abrianna 的回复:]
引用楼主 bios8086 的回复:
现在的CPU一般都支持超线程吧?最多能分配多少个线程?
利用别的核心计算是不是效果会更好?
同时计算9个线程会不会计算量很多呢?
这些问题很伤脑筋
还有万一有个很老的电脑在运行你的程序该怎么办呢?
和c#无关,一个进程可以创建255个线程,包括ui线程。
线程不是越多越快,就一个cpu的话,大量计算工作一般不分线程处理,线程调度需要时间,……
[/Quote]
我记得2.0下,大概就是255这个数。但是.NET并不做特别限制,可以突破这个书目,如下:
ThreadPool.SetMaxThreads(350, 350);
由于你自起的线程在后台也会放入池中,所以上面的代码就可以达到突破这个限额。不过,问题的关键是,如果你程序含那么多线程,估计就得考虑下是否设计合理
abrianna
2010-12-10
打赏
举报
回复
[Quote=引用楼主 bios8086 的回复:]
现在的CPU一般都支持超线程吧?最多能分配多少个线程?
利用别的核心计算是不是效果会更好?
同时计算9个线程会不会计算量很多呢?
这些问题很伤脑筋
还有万一有个很老的电脑在运行你的程序该怎么办呢?
[/Quote]
和c#无关,一个进程可以创建255个线程,包括ui线程。
线程不是越多越快,就一个cpu的话,大量计算工作一般不分线程处理,线程调度需要时间,线程的目的是有效的利用线程的闲时做其他事情。
bios8086
2010-12-10
打赏
举报
回复
[Quote=引用 7 楼 wuyq11 的回复:]
多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。
多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能。
直接创建Thread对象,并且调用它的Start方法
使用ThreadPool.QueueUserWorkItem方法
……
[/Quote]
-------------
你说的没错,可是现在是多核CPU时代了,线程在不同的核心运行,程序运行的速度必然会加快
bios8086
2010-12-10
打赏
举报
回复
VS2008不行吗?
jialine0426
2010-12-10
打赏
举报
回复
我一般建议线程开设数量为服务器核心数+2
其实这本身有个很复杂的计算方法,比如资源竞争数,并行运行线程数等,我以前看过这方面的资料,讲的是并行运算与资源竞争如何计算时间复杂度。你也可以去找找这方面的资料。不过最简单的处理方式是核心数加2
jialine0426
2010-12-10
打赏
举报
回复
VS2010可以用C#开发多核程序
bios8086
2010-12-10
打赏
举报
回复
C#有多核编程的相关技术吗?
RoJJ_97
2010-12-09
打赏
举报
回复
我分配过1000个,双核CPU。用的循环1000次。
系统反映速度稍微慢了些。
wuyq11
2010-12-09
打赏
举报
回复
多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。
多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能。
直接创建Thread对象,并且调用它的Start方法
使用ThreadPool.QueueUserWorkItem方法
使用BackgroundWorker
Parallel.For - for 循环的并行运算
Parallel.ForEach - foreach 循环的并行运算
Parallel.Invoke - 并行调用多个任务
Task - 任务,基于线程池。
PLINQ - 用于对内存中的数据做并行运算
bios8086
2010-12-09
打赏
举报
回复
单核CPU开10线程和100线程,CPU也不是爆满
你是说效果都一样 都是爆满是吧
winner2050
2010-12-09
打赏
举报
回复
线程你得分情况。
计算密集型的应用,就一个核心一个线程。
瓶颈不在CPU的话,线程多也一样,比如扫描局域网的程序,单核CPU开10线程和100线程,CPU也不是爆满。
bios8086
2010-12-09
打赏
举报
回复
[Quote=引用 3 楼 findcaiyzh 的回复:]
如果1个线程就占用100% cpu的话,不用开太多个线程了。
两个,一个UI,一个Worker thread.
[/Quote]
是否可以这样 先检测CPU有几个核心
核心多的话 先分配核心 让线程平均分配些
宝_爸
2010-12-09
打赏
举报
回复
如果1个线程就占用100% cpu的话,不用开太多个线程了。
两个,一个UI,一个Worker thread.
bios8086
2010-12-09
打赏
举报
回复
[Quote=引用 1 楼 m00ners 的回复:]
9个线程不是很多,关键看你线程里面做的是什么
[/Quote]
你说的是 单个线程运算量都蛮大的
m00ners
2010-12-09
打赏
举报
回复
9个线程不是很多,关键看你线程里面做的是什么
C#
多
线程
编程实战Code源代码
C#
多
线程
编程实战Code源代码 资源是从华章出版社官网下载的
C#
基于控制台的多
线程
下载程序
C#
基于控制台的多
线程
下载程序,多
线程
分块下载,支持断点续传。可以试着改一下做成自己的下载工具。
C#
高级--多
线程
详解
C#
高级–多
线程
详解 零、文章目录 一、什么是多
线程
1、进程 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。 而一个进程又是由多个
线程
所组成的。 2、
线程
线程
是程序中的一个执行流,每个
线程
都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的
线程
可以执行同样的函数。 3、句柄 句柄是Windows系统中对象或实例的标识,这些对象包括模块、应用程序实例、窗口、控制、位图、GDI对象、资源、文件等。 4、多
线程
(1)多
线程
概念 多
线程
是指程序中
一个进程最多可以创建多少个
线程
?
一个进程最多可以创建多少个
线程
什么是
线程
安全?如何在
C#
中实现
线程
安全?
线程
安全(Thread Safety)是指程序在多
线程
环境中运行时,能够正确地访问和修改共享数据,避免出现竞态条件(Race Conditions)等问题。
线程
安全是多
线程
编程中的核心问题,
C#
提供了丰富的工具和机制来确保
线程
安全。是一种简单且常用的
线程
同步机制,确保同一时刻只有一个
线程
可以执行被锁定的代码块。信号量用于限制
线程
的并发访问数量,例如控制一个资源最多被 N 个
线程
访问。适合读多写少的场景,允许多个
线程
同时读取,但只允许一个
线程
写入。是一种跨进程的同步机制,可以用来同步不同进程中的
线程
。
C#
111,096
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章