线程挂起 什么作用?

2025-03-06 03:02:16
推荐回答(4个)
回答1:

线程是靠cpu来运行的,cpu要运行一个线程(不说别的)最起码就是要占用cpu时间,象Windows这样的多任务操作系统,可以允许多个线程同时运行,所谓的同时运行并不是真正的同时运行,而是轮流运行不同的线程,因为cpu速度很快,如果线程不是很多,就会给用户有所有线程在同时运行的错觉。举个例子,系统中有10个线程要运行,如果要求在1秒内所有的线程都运行一遍,则每个线程可运行时间为10分之一秒,也就是如果一个线程已经运行了10分之一秒,系统会停止该线程(或称为挂起该线程),运行下一个线程,当又轮到挂起的线程运行时,系统会从该线程停止的地方运行,这种线程挂起是由系统进行的,即所谓的线程调度。有时候,我们的线程暂时没有数据处理,我们也可以通过一些API来使自己的线程挂起,当系统检测到线程被用户挂起时,就算轮到该线程系统也不会运行该线程,而是直接去运行下一个线程,这种情况下,除非用户使该线程退出挂起状态,否则系统不会运行该线程。从这个意义上来讲,一个线程挂起将会给其他线程赢得更多的运行时间(或机会),也就节约了CPU的时间资源。

回答2:

本来线程是占用cpu资源的,但是如果挂起的话,操作系统就不给这个现成分配cpu资源,除非以后再恢复,所以线程挂起的作用就是节省cpu资源,最根本的

回答3:

不要使用 Suspend 和 Resume 方法来同步线程的活动。您无法知道挂起线程时它正在执行什么代码。如果您在安全权限评估期间挂起持有锁的线程,则 AppDomain 中的其他线程可能被阻止。如果您在线程正在执行类构造函数时挂起它,则 AppDomain 中试图使用该类的其他线程将被阻止。这样很容易发生死锁。 这就是他过时的理由。所以你只要没有使用lock之类的语句一般一点问题都没有。放心用吧!

回答4:

该线程暂时不参与CPU时间片分配,相当于延续挂起前操作n毫秒。比如挂起蜂蜜器线程10毫秒,相当于蜂鸣器连续响10s,不发生变化。用Sleep()函数实现,参数是想要挂起的毫秒数。