- 博客(6)
- 资源 (6)
- 收藏
- 关注
原创 孤儿进程与僵尸进程
1.基本概念 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。 2.
2016-07-31 21:22:08 433
原创 进程间通讯方式
1.文件描述符和命令行参数,父进程创建子进程时,一次性传递给子进程,只能通讯一次 2.共享内存 3.管道 匿名管道只能用于关系进程 命名管道可用于非关系进程 4.socket通信,可用于不同主机间进程间通讯
2016-07-31 17:18:44 320
原创 多线程优点及同步方式
一、多线程优点 1.通常启动一个进程,要为该进程分配独立的地址空间,建立多个数据表来维护进程的代码段、堆栈段和数据段,比较耗费系统资源。一个进程创建多线程可以使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于进程所需空间,而且启动线程花费的时间也比进程花费时间少很多。 2.线程间通讯方便,以为线程之间具有共同的地址空间,共享大部分数据资源 3.提高应用响应速度,将耗时工作放
2016-07-31 16:58:24 1261
原创 构造函数/析构函数不能调用虚函数
1.构造函数的初始化顺序是先调用基类的构造函数,再调用继承类构造函数,若在构造函数调用虚函数,若此时正在调用基类构造函数,继承类构造函数还未调用,则数据变量还未初始化,此时会出现未初始化定义异常 2.析构函数则相反,析构函数的调用顺序是先调用继承类析构函数,再调用基类析构函数,若在析构函数调用虚函数,若此时继承类析构函数已调用完成,数据变量已经释放,则会出现未初始化定义异常
2016-07-31 13:37:49 535
转载 C++ 为什么析构函数不能抛出异常
more effective c++提出两点理由: 1. 如果析构函数抛出异常,则异常点之后的程序不会执行,如果析构函数在异常点之后执行了某些必要的动作比如释放某些资源,则这些动作不会执行,会造成诸如资源泄漏的问题。 2. 通常异常发生时,c++的机制会调用已经构造对象的析构函数来释放资源,此时若析构函数本身也抛出异常,则前一个异常尚未处理,又有新的异常,会造成程序崩溃的问题。
2016-07-31 12:49:07 541
原创 C++全局变量和静态全局变量的区别
1.两者作用域不同,全局变量的作用域是整个工程项目,静态全局变量作用域只在当前文件 2.全局变量在其他文件引用时,需使用extern声明 3.全局变量和静态全局变量都存储在静态存储区
2016-07-29 20:52:03 1551
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人