C#线程到底是干什么的
1个回答
展开全部
.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两个线程就可以并行!第二个错误是提高应用程序性能,其实对于性能来说没有提高,很多人以执行时间的长短做为软件性能计量了——垃圾代码段就是垃圾代码段,提高不了性能的,需要多个运算一点也不能少,只是因为并行了原因应用程序运行的时间缩短了——并不是应用程序性能提高了!这是有很大区别的!)
如果要理解线程,那么系统线程就必须理解的。至于.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两个线程就可以并行!第二个错误是提高应用程序性能,其实对于性能来说没有提高,很多人以执行时间的长短做为软件性能计量了——垃圾代码段就是垃圾代码段,提高不了性能的,需要多个运算一点也不能少,只是因为并行了原因应用程序运行的时间缩短了——并不是应用程序性能提高了!这是有很大区别的!)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询