当前位置:首页 » 资源管理 » 线程占用多少资源
扩展阅读
宝和堂补肾产品哪个最好 2025-05-23 09:47:56
木板裁切用什么工具 2025-05-23 09:38:30
干性皮肤检测哪个产品 2025-05-23 09:34:03

线程占用多少资源

发布时间: 2022-04-29 06:16:22

① linux如何查看进程中各个线程的资源占用情况

直接打开资源管理器,再进积栏目中就可以看到各个线程的资源占用情况

② 为什么线程要比进程占用的资源少

童鞋,进程是资源的分配单位,进程是包含运行一个程序所需资源的容器。线程是处理器调度和执行的单位,线程主要包含记录自身执行历史的栈内存,其他的资源和同一进程里的其他线程共享。

线程和进程不是独立的概念,自己去看看书吧!

③ 多线程运行时,各线程是如何占用CPU资源的

意思是说JAVA的每个线程只能由一个CPU为它提供服务,无法实现多个CPU同时为一个线程提供计算服务,如果一个线程占用CPU资源非常多,即使它耗尽一个CPU的所有资源时,其他空闲CPU也不会为它分担任何负荷

④ 单线程和多线程的CPU占用率相差多么

单线程的也就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的彩绘执行到。
多线程嘛,举个例子也就是说程序可以同时执行2个以上相同类似的操作,比如一些搜索代理或者群发email的多线程软件,由于操作一次需要网络的返回信息 花的时间比较长,而对cpu来说却是空闲的,如果是一个一个顺序执行,那么搜索几千个IP就会花上好久好久。
而如果用多线程就可以在等待期间 加入其他的搜索,然后等待,这样可以提高效率。
不过多线程和多进程公用一些资源时要考虑的问题好像也是一样的,对于一些公共资源或者公共变量的访问和修改时要注意特别的,需要一些锁定什么的,还有顺序问题的考虑。
多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O,OEMBIOS等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。
每个程序执行时都会产生一个进程,而每一个进程至少要有一个主线程。
这个线程其实是进程执行的一条线索,除了主线程外还可以给进程增加其它的线程,也即增加其它的执行线索,由此在某种程度上可以看成是给一个应用程序增加了多任务功能。
当程序运行后,可以根据各种条件挂起或运行这些线程,尤其在多CPU的环境中,这些线程是并发运行的。
多线程就是在一个进程内有多个线程。
从而使一个应用程序有了多任务的功能。
多进程技术也可以实现这一点,但是创建进程的高消耗(每个进程都有独立的数据和代码空间),进程之间通信的不方便(消息机制),进程切换的时间太长,这些导致了多线程的提出,对于单CPU来说(没有开启超线程),在同一时间只能执行一个线程,所以如果想实现多任务,那么就只能每个进程或线程获得一个时间片,在某个时间片内,只能一个线程执行,然后按照某种策略换其他线程执行。
由于时间片很短,这样给用户的感觉是同时有好多线程在执行。
但是线程切换是有代价的,因此如果采用多进程,那么就需要将线程所隶属的该进程所需要的内存进行切换,这时间代价是很多的。
而线程切换代价就很少,线程是可以共享内存的。
所以采用多线程在切换上花费的比多进程少得多。
但是,线程切换还是需要时间消耗的,所以采用一个拥有两个线程的进程执行所需要的时间比一个线程的进程执行两次所需要的时间要多一些。
即采用多线程不会提高程序的执行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间。
上述结果只是针对单CPU,如果对于多CPU或者CPU采用超线程技术,采用多线程技术还是会提高程序的执行速度的。
因为单线程只会映射到一个CPU上,而多线程会映射到多个CPU上,超线程技术本质是多线程硬件化,所以也会加快程序的执行速度。

⑤ system中有3个线程共占用cpu80左右

System
Idle
Process进程的作用是在系统空闲的时候分派CPU的时间,它显示的超过80%以上的CPU资源并不是指的它占用了这么多CPU资源,恰恰相反
而是表示有80%以上的CPU资源空闲了出来,这里的数字越大表示CPU资源越多,数字越小则表示CPU资源紧张。该进程是系统运行必需的,不能禁止哦!

⑥ 子线程占用的是cpu资源吗

是。
本质上是由CPU处理,当然会占CPU资源。以C语言为例,线程自己没有资源,线程用的是所属进程的资源。资源由CPU分配,多线程问题操作系统通过时间片来调节。如何分配,有很多种,可以平均分配,可以按照优先级来分配等等,看别人算法怎么实现咯,针对不同目的有不同算法,另外线程阻塞,会切换到别的进程。

⑦ 进程和线程是什么,有什么区别呢

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

线程与进程的区别:

1、地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;

2、进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源;

3、线程是处理器调度的基本单位,但进程不是;

4、二者均可并发执行。

(7)线程占用多少资源扩展阅读:

线程的引入:

60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,

一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;

二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。

因此在80年代,出现了能独立运行的基本单位——线程(Threads)。

适用范围:

1、服务器中的文件管理或通信控制;

2、前后台处理;

3、异步处理。

进程是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统引入的。

进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

特征:

1、动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

2、并发性:任何进程都可以同其他进程一起并发执行

3、独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;

4、异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

5、结构特征:进程由程序、数据和进程控制块三部分组成。

多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

⑧ 请教关于进程和线程占用资源的问题

线程是一种操作系统对象,代表着一个进程中要被执行的代码的路径。每一个WIN32应用程序至少有一个线程--通常称为住线程或默认线程--但应用程序可以自由地创建其他线程来执行其他任务!
进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到消亡的过程
线程是比进程更小的执行单位。一个进程在其执行过程能够中,可以产生 多个线程,形成多条执行线索。每条线索,即每个线程也有它自身的产生、存在和消亡过程,也是一个动态的概念。
一个程序应该只有一个进程吧,但是可以拥有多个线程。
可以说,一个执文件被运行后,就可以称为是一个进程了。但是进程只是存在内存中,实际上他是不会做任何事情的。
这个时候,起作用的就是线程了。线程是程序的执行者,一个程序至少有一个线程,但是在多线程的操作系统中,可以有一个以上的线程。

其实我们可以把线程看成是我们排队买肯德鸡吃(循环的排队,一直排下去,知道我不想买了,退出)。每人都有机会到达队伍的最前端去买东西,这个就好比是线程,都有机会被程序执行。但是线程真正起作用的时候,就是我们在队伍的最前端买东西到东西买完后,这一段时间,这是线程真正执行的阶段。进程与线程
进程和线程是两个相对的概念,通常来说,一个进程可以定义程序的一个实例(Instan
ce)。在Win32中,进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让
进程完成一定的工作,进程必须至少占有一个线程,正是这个线程负责包含进程地址空
间中的代码。实际上,一个进程可以包含几个线程,它们可以同时执行进程地址空间中
的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。每个进程中至少有
一个线程在执行其地址空间中的代码。如果没有线程执行进程地址空间中的代码,进程
也就没有继续存在的理由,系统将自动清除进程及其地址空间。
多线程的实现原理
创建一个进程时,它的第一个线程称为主线程(Primary thread),由系统自动生成。
然后可以由这个主线程生成额外的线程,而这些线程,又可以生成更多的线程。
在运行一个多线程的程序时,从表面上看,这些线程似乎在同时运行。而实际情况并非
如此,为了运行所有的这些线程,操作系统为每个独立线程安排一些CPU时间。单CPU操
作系统以轮转方式向线程提供时间片(Quantum),每个线程在使用完时间片后交出控制
,系统再将CPU时间片分配给下一个线程。由于每个时间片足够的短,这样就给人一种假
象,好像这些线程在同时运行。创建额外线程的唯一目的就是尽可能地利用CPU时间。
多线程的问题
使用多线程编程可以给程序员带来很大的灵活性,同时也使原来需要复杂技巧才能解决
的问题变得容易起来。但是,不应该人为地将编写的程序分成一些碎片,让这些碎片按
各自的线程执行,这不是开发应用程序的正确方法。
线程很有用,但当使用线程时,可能会在解决老问题的同时产生新问题。例如要开发一
个字处理程序,并想让打印功能作为单独的线程自己执行。这听起来是很好的主意,因
为在打印时,用户可立即返回,开始编辑文档。但这样一来,在该文档被打印时文档中
的数据就有可能被修改,打印的结果就不再是所期望的内容。也许最好不要把打印功能
放在单独的线程中,不过如果一定要用多线程的话,也可以考虑用下面的方法解决:第
一种方法是锁定正在打印的文档,让用户编辑其他的文档,这样在结束打印之前,该文
档不会作任何修改;另一个方法可能更有效一些,即可以把该文档拷贝到一个临时文件
中,打印这个临时文件的内容,同时允许用户对原来的文档进行修改。当包含文档的临
时文件打印完成时,再删去这个临时文件。
通过上面的分析可以看出,多线程在帮助解决问题的同时也可能带来新问题。因此有必
要弄清楚,什么时候需要创建多线程,什么时候不需要多线程。总的来说,多线程往往
用于在前台操作的同时还需要进行后台的计算或逻辑判断的情况,而对于GUI(图形用户
接口),除了开发MDI(多文档界面)应用程序外,应尽量不使用多线程。
线程的分类
在MFC中,线程被分为两类,即工作线程和用户界面线程。如果一个线程只完成后台计算
,不需要和用户交互,那么可以使用工作线程;如果需要创建一个处理用户界面的线程
,则应使用用户界面线程。这两者的主要区别在于,MFC框架会给用户界面线程增加一个
消息循环,这样用户界面线程就可以处理自己消息队列中的消息。这样看来,如果需要
在后台作一些简单的计算(如对电子表格的重算),则首先应考虑使用工作线程,而当
后台线程需要处理比较复杂的任务,确切地说,当后台线程的执行过程会随着实际情况
的不同而改变时,就应该使用用户界面线程,以便能对不同的消息作出响应。
线程的优先级
当系统需要同时执行多个进程或多个线程时,有时会需要指定线程的优先级。线程的优
先级一般是指这个线程的基优先级,即线程相对于本进程的相对优先级和包含此线程的
进程的优先级的结合。操作系统以优先级为基础安排所有的活动线程,系统的每一个线
程都被分配了一个优先级,优先级的范围从0到31。运行时,系统简单地给第一个优先级
为31的线程分配CPU时间,在该线程的时间片结束后,系统给下一个优先级为31的线程分
配CPU时间。当没有优先级为31的线程时,系统将开始给优先级为30的线程分配CPU时间
,以此类推。除了程序员在程序中改变线程的优先级外,有时程序在执行过程中系统也
会自动地动态改变线程的优先级,这是为了保证系统对终端用户的高度响应性。比如用
户按了键盘上的某个键时,系统就会临时将处理WM_KEYDOWN消息的线程的优先级提高2到
3。CPU按一个完整的时间片执行线程,当时间片执行完毕后,系统将该线程的优先级减
1。
线程的同步
在使用多线程编程时,还有一个非常重要的问题就是线程同步。所谓线程同步是指线程
之间在相互通信时避免破坏各自数据的能力。同步问题是由前面说到的Win32系统的CPU
时间片分配方式引起的。虽然在某一时刻,只有一个线程占用CPU(单CPU时)时间,但
是没有办法知道在什么时候,在什么地方线程被打断,这样如何保证线程之间不破坏彼
此的数据就显得格外重要。在MFC中,可以使用4个同步对象来保证多线程同时运行。它
们分别是临界区对象(CCriticalSection)、互斥量对象(CMutex)、信号量对象(CS
emaphore)和事件对象(CEvent)。在这些对象中,临界区对象使用起来最简单,它的
缺点是只能同步同一个进程中的线程。另外,还有一种基本的方法,本文称为线性化方
法,即在编程过程中对一定数据的写操作都在一个线程中完成。这样,由于同一线程中
的代码总是按顺序执行的,就不可能出现同时改写数据的情况。

⑨ 线程不拥有系统资源,但占用cpu资源。这句话是否矛盾

线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。这是网络上的,也就是说线程只是占用那么一点点系统建立线程的系统资源,真正占用系统资源的是程序的执行。