文章目录
一些基础信息
线程是什么?
一种运行进程的基本单位,还会占用计算机资源。
进程是什么?
一种运行程序的基本单位。
线程什么情况下会消耗资源?
- 切换上下文时,当你从这个线程切换到另一个线程,这种行为会耗费资源。
- 正常运行时,耗费的资源程度和代码逻辑有关系,简单的逻辑用一个线程运行就能免去切换线程上下文需要耗费的资源。
- 挂起等待其他线程运行时(阻塞状态),这种情况耗费的资源很少,但你懂的,如果等待中的线程基数很大,耗费的资源就会很多,另外,等待的线程重新运行会导致上下文切换(这又要耗费资源)。
线程状态是怎么变化的?
首先创建线程,start()启动,此时进入Running状态,各个相同优先级线程会随机交替运行,从Running转到WaitSleepJoin状态进行等待,或转回Running状态进行运行,运行结束就会进入Stopped状态。
但现代计算机的cpu都是多核,所以一般会同时运行几个线程,但即使如此也可能有状态间的变换,而不是直接Running到Stopped。
线程状态可以通过**Thread对象.ThreadState.ToString()**获得。
硬件环境会影响多线程程序吗?
单核cpu的机器每次只能运行一个线程,只能并发运行线程,所以效率会低。
多核的cpu可以并行运行线程,效率就会高些。
多个单核cpu也可以并行运行线程但开销很大。