linux 线程可以使用进程的哪些资源

linux 线程可以使用进程的哪些资源,第1张

Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的。而默认的条件下,一个线程结束后,其对应的资源不会被释放,于是,如果在一个程序中,反复建立线程,而线程又默认的退出,则最终线程资源耗尽,进程将不再能建立新的线程。

解决这个问题,有2种方式,系统自动释放线程资源,或者由另一个线程释放该线程资源。

注意,在这里,我认为进程运行后,本身,也是一个线程,主线程,主线程和主线程建立的线程共享进程资源。不同于其他线程,在于主线程运行结束后,程序退出,所有程序建立的线程也会退出。

系统自动释放

如果想在线程结束时,由系统释放线程资源,则需要设置线程属性为detach。

代码上,可以这样表示:

pthread_t t

pthread_attr_t a//线程属性

pthread_attr_init(&a) //初始化线程属性

pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED) //设置线程属性

::pthread_create( &t, &a, GetAndSaveAuthviewSDRStub, (void*)lp) //建立线程

其他线程释放

另一种方式,则是由另一个线程将该资源释放。

代码上,可以这样表示:

pthread_t t

::pthread_create( NULL, NULL, GetAndSaveAuthviewSDRStub, (void*)lp)

::pthread_join( t)

top命令是最方便的,想看CPU列的话直接按字母 c 就会以cpu的使用高低来排列。 其实就每一列的第一个字母,如果想按cpu排列就按c ,按内存排列就按m。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND top [-] [d delay] [q] [c] [s] [S] [i] d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 S 指定累计模式。 s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 i 使top不显示任何闲置或者僵死进程。 c 显示整个命令行而不只是显示命令名但是无法显示每个线程的 cpu 利用率情况, 这时就可能出现这种情况,总的 cpu 利用率中 user 或 system 很高,但是用进程的 cpu 占用率进行排序时,没有进程的 user 或 system 与之对应。 可以用下面的命令将 cpu 占用率高的线程找出来: 这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8354300.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存