澳门葡亰娱乐场手机版-澳门新葡亰手机娱乐网址


回收工作进程(进程资源回收)

文章发布时间:2019-12-03 10:12:40
回收

进程资源回收

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);
::pthread_join( t)等待线程t退出,并释放t线程所占用的资源。当然,这里也有个同步的功能,使一个线程等待另一个线程退出,然后才继续运行。

linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态,如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符(总计8K多)。只有当你调用了pthread_join之后这些资源才会被释放。
若是unjoinable状态的线程,这些资源在线程函数退出时或pthread_exit时自动会被释放。
unjoinable属性可以在pthread_create时指定,或在线程创建后在线程中pthread_detach自己,如:pthread_detach(pthread_self()),将状态改为unjoinable状态,确保资源的释放。或者将线程置为joinable,然后适时调用pthread_join.
在程序运行中检查/proc/ /maps文件,若看到大概8K左右的很多虚拟内存碎片,基本上可以确认是线程资源泄漏造成的300个线程后pthread_create失败。

不知是否因为自己,先对要创建的线程做了以下属性设定,
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

然后又在线程函数中使用
pthread_detach(pthread_self());

两段代码作用有冲突。
===============================================================================
pthread_detach(threadid)和pthread_detach(pthread_self())的区别应该是调用他们的线程不同,没其他区别。

pthread_detach(threadid)函数的功能是使线程ID为threadid的线程处于分离状态,一旦线程处于分离状态,该线程终止时底层资源立即被回收;否则终止子线程的状态会一直保存(占用系统资源)直到主线程调用pthread_join(threadid,NULL)获取线程的退出状态。
通常是主线程使用pthread_create()创建子线程以后,一般可以调用pthread_detach(threadid)分离刚刚创建的子线程,这里的threadid是指子线程的threadid;如此以来,该子线程止时底层资源立即被回收;
被创建的子线程也可以自己分离自己,子线程调用pthread_detach(pthread_self())就是分离自己,因为pthread_self()这个函数返回的就是自己本身的线程ID。

工作进程

安排进度计划的目的是为了控制时间和节约时间,而项目的主要特点之一即是有严格的时间期限要求,由此决定了进度计划在项目管理中的重要性。

基本进度计划要说明哪些工作必须于何时完成和完成每一任务所需要的时间,但最好同时也能表示出每项活动所需要的人数。常用的制定进度计划的方法有以下几种:

①关键日期表
这是最简单的一种进度计划表,它只列出一些关键活动和进行的日期。

②甘特图
也叫做线条图或横道图。它是以横线来表示每项活动的起止时间。甘特图的优点是简单、明了、直观,易于编制,因此到目前为止仍然是小型项目中常用的工具。即使在大型工程项目中,它也是高级管理层了解全局、基层安排进度时有用的工具。
在甘特图上,可以看出各项活动的开始和终了时间。在绘制各项活动的起止时间时,也考虑它们的先后顺序。但各项活动上间的关系却没有表示出来,同时也没有指出影响项目寿命周期的关键所在。因此,对于复杂的项目来说,甘特图就显得不足以适应。

③关键路线法(Critical Path Method,简称CPM)。

④计划评审技术(Program Evaluation and Review Technique,简称PERT)。

CPM和PERT是50年代后期几乎同时出现的两种计划方法。随着科学技术和生产的迅速发展,出现了许多庞大而复杂的科研和工程项日,它们工序繁多,协作面广,常常需要动用大量人力、物力、财力。因此,如何合理而有效地把它们组织起来,使之相互协调,在有限资源下,以最短的时间和最低费用,最好地完成整个项目就成为一个突出的重要问题。CPM和PERT就是在这种背景下出现的。这两种计划方法是分别独立发展起来的,但其基本原理是一致的,即用网络图来表达项目中各项活动的进度和它们之间的相互关系,并在此基础上,进行网络分析,计算网络中各项时间多数,确定关键活动与关键路线,利用时差不断地调整与优化网络,以求得最短周期。然后,还可将成本与资源问题考虑进去,以求得综合优化的项目计划方案。因这两种方法都是通过网络图和相应的计算来反映整个项目的全貌,所以又叫做网络计划技术。

此外,后来还陆续提出了一些新的网络技术,如GERT(Graphical Evaluation and Review Technique,图示评审技术),VERT(Venture Evaluation and Review Technique,风险评审技术)等。

很显然,采用以上几种不同的进度计划方法本身所需的时间和费用是不同的。关键日期表编制时间最短,费用最低。甘特图所需时间要长一些,费用也高一些。CPM要把每个活动都加以分析,如活动数目较多,还需用计算机求出总工期和关键路线,因此花费的时间和费用将更多。PERT法可以说是制订项目进度计划方法中最复杂的一种,所以花费时间和费用也最多。

应该采用哪一种进度计划方法,主要应考虑下列因素:
①项目的规模大小。很显然,小项目应采用简单的进度计划方法,大项目为了保证按期按质达到项目目标,就需考虑用较复杂的进度计划方法。
②项目的复杂程度。这里应该注意到,项目的规模并不一定总是与项目的复杂程度成正比。例如修一条公路,规模虽然不小,但并不太复杂,可以用较简单的进度计划方法。而研制一个小型的电子仪器,要很复杂的步骤和很多专业知识,可能就需要较复杂的进度计划方法。
③项目的紧急性。在项目急需进行,特别是在开始阶段,需要对各项工作发布指示,以便尽早开始工作,此时,如果用很长时间去编制进度计划,就会延误时间。
④对项目细节掌握的程度。如果在开始阶段项目的细节无法解明,CPM和PERT法就无法应用。
⑤总进度是否由一、两项关键事项所决定。如果项目进行过程中有一、两项活动需要花费很长时间,而这期间可把其他准备工作都安排好,那么对其他工作就不必编制详细复杂的进度计划了。
③有无相应的技术力量和设备。例如,没有计算机,CPM和PERT进度计划方法有时就难以应用。而如果没有受过良好训练的合格的技术人员,也无法胜任用复杂的方法编制进度计划。

工作进程表

安排进度计划的目的是为了控制时间和节约时间,而项目的主要特点之一即是有严格的时间期限要求,由此决定了进度计划在项目管理中的重要性。

基本进度计划要说明哪些工作必须于何时完成和完成每一任务所需要的时间,但最好同时也能表示出每项活动所需要的人数。常用的制定进度计划的方法有以下几种:

①关键日期表
这是最简单的一种进度计划表,它只列出一些关键活动和进行的日期。

②甘特图
也叫做线条图或横道图。它是以横线来表示每项活动的起止时间。甘特图的优点是简单、明了、直观,易于编制,因此到目前为止仍然是小型项目中常用的工具。即使在大型工程项目中,它也是高级管理层了解全局、基层安排进度时有用的工具。
在甘特图上,可以看出各项活动的开始和终了时间。在绘制各项活动的起止时间时,也考虑它们的先后顺序。但各项活动上间的关系却没有表示出来,同时也没有指出影响项目寿命周期的关键所在。因此,对于复杂的项目来说,甘特图就显得不足以适应。

③关键路线法(Critical Path Method,简称CPM)。

④计划评审技术(Program Evaluation and Review Technique,简称PERT)。

CPM和PERT是50年代后期几乎同时出现的两种计划方法。随着科学技术和生产的迅速发展,出现了许多庞大而复杂的科研和工程项日,它们工序繁多,协作面广,常常需要动用大量人力、物力、财力。因此,如何合理而有效地把它们组织起来,使之相互协调,在有限资源下,以最短的时间和最低费用,最好地完成整个项目就成为一个突出的重要问题。CPM和PERT就是在这种背景下出现的。这两种计划方法是分别独立发展起来的,但其基本原理是一致的,即用网络图来表达项目中各项活动的进度和它们之间的相互关系,并在此基础上,进行网络分析,计算网络中各项时间多数,确定关键活动与关键路线,利用时差不断地调整与优化网络,以求得最短周期。然后,还可将成本与资源问题考虑进去,以求得综合优化的项目计划方案。因这两种方法都是通过网络图和相应的计算来反映整个项目的全貌,所以又叫做网络计划技术。

此外,后来还陆续提出了一些新的网络技术,如GERT(Graphical Evaluation and Review Technique,图示评审技术),VERT(Venture Evaluation and Review Technique,风险评审技术)等。

很显然,采用以上几种不同的进度计划方法本身所需的时间和费用是不同的。关键日期表编制时间最短,费用最低。甘特图所需时间要长一些,费用也高一些。CPM要把每个活动都加以分析,如活动数目较多,还需用计算机求出总工期和关键路线,因此花费的时间和费用将更多。PERT法可以说是制订项目进度计划方法中最复杂的一种,所以花费时间和费用也最多。

应该采用哪一种进度计划方法,主要应考虑下列因素:
①项目的规模大小。很显然,小项目应采用简单的进度计划方法,大项目为了保证按期按质达到项目目标,就需考虑用较复杂的进度计划方法。
②项目的复杂程度。这里应该注意到,项目的规模并不一定总是与项目的复杂程度成正比。例如修一条公路,规模虽然不小,但并不太复杂,可以用较简单的进度计划方法。而研制一个小型的电子仪器,要很复杂的步骤和很多专业知识,可能就需要较复杂的进度计划方法。
③项目的紧急性。在项目急需进行,特别是在开始阶段,需要对各项工作发布指示,以便尽早开始工作,此时,如果用很长时间去编制进度计划,就会延误时间。
④对项目细节掌握的程度。如果在开始阶段项目的细节无法解明,CPM和PERT法就无法应用。
⑤总进度是否由一、两项关键事项所决定。如果项目进行过程中有一、两项活动需要花费很长时间,而这期间可把其他准备工作都安排好,那么对其他工作就不必编制详细复杂的进度计划了。
③有无相应的技术力量和设备。例如,没有计算机,CPM和PERT进度计划方法有时就难以应用。而如果没有受过良好训练的合格的技术人员,也无法胜任用复杂的方法编制进度计划。

终端进程已停止工作

方法一:
1、可进入高级选项,进行恢复电脑操作
方法二:
1、打开“控制面板”—“管理工具”—“事件查看器”;
2、依次展开左侧的“Windows日志”—“应用程序”,在右侧根据错误提示对话框出现的时间查找错误日志记录,找到后点击信息中的错误,会在下方显示详细信息,其中“错误模块”就是指出错的程序,如图中是Sogou输入法,然后将Sogou输入法卸载后再重新下载最新的安装程序并安装。

继续阅读
XML 地图 | Sitemap 地图