C#线程到底是干什么的

 我来答
Tech_Monkeye5
2018-06-10 · TA获得超过984个赞
知道小有建树答主
回答量:330
采纳率:92%
帮助的人:79万
展开全部
.net 类库中的线程其实就是对系统线程的一个封装库,仅此而已!
如果要理解线程,那么系统线程就必须理解的。至于.net中的线程是干什么用的——系统中的线程是干什么的,它就是干什么的!
其实线程的作用就是在计算机上为了提高硬件利用率而已!
比如一个进程,先要使用CPU 50ms,再使用硬盘IO 40ms,然后再使用CPU 50ms,那么该进程完成的时间为140ms! CPU的利用率为100/140,而硬盘利用率40/140,可见硬件的利用率并不高。如果规划成线程,其一线程使用CPU50ms,二线程使用磁盘40ms,三线程使用CPU50ms——那么线程一与线程二可以同时进行,而线程三需要等待线程二的读取资源(当然即使不需要也要等待线程一的CPU资源),如果忽略线程开辟等系统开销,任务可以在100ms内完成! CPU利用率是100/100,磁盘利用率是40/100,可以大大提高了硬件利用率。
在.net中的线程也是如此,很多人只看中了其CPU的利用率——所以认为有多少个CPU逻辑核心就开辟多少个线程,其实.net线程也需要规划的——也是通过提高硬件利用率来缩短应用程序执行时间!(说通过线程并行提高应用程序性能的有两个错误——线程并行只是表面现象,使用同一资源的线程必须互斥并不能并行——他们只看到多核心CPU的线程并行,因为其资源数不是一个而是多个,就算是单核心的话,线程也可以并行——比如CPU与硬盘IO两个线程就可以并行!第二个错误是提高应用程序性能,其实对于性能来说没有提高,很多人以执行时间的长短做为软件性能计量了——垃圾代码段就是垃圾代码段,提高不了性能的,需要多个运算一点也不能少,只是因为并行了原因应用程序运行的时间缩短了——并不是应用程序性能提高了!这是有很大区别的!)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式