线程与进程笔记

C++笔记(面试总结 四)

1.进程间的五种通信方式
1.管道(无名管道)
特点:半双工,只能按照一个方向传输,只能在具有血缘关系的进程之间流动,只存于内存中。
2.命名管道(FIFO)
特点:在无关的进程之间进行通信,存在于文件系统中
3.消息队列
消息的链接表,存放在内核中。一个消息队列有一个标识符来标记。
消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。

消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。

消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。
4.共享内存
指两个或多个进程同时占用一块存储区。最快的一种方式。
需要和信号量一起使用来保证进程之间的同步。

2.线程同步和线程互斥的区别
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。
线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步(下文统称为同步)。

3.虚析构函数

通过基类的指针来删除派生类的对象时,基类的析构函数应该是虚的,否则其删除效果将无法实现。
在公有继承中,基类对派生类及其对象的操作,只能影响到那些从基类继承下来的成员。
如果想要用基类对非继承成员进行操作,则要把基类的这个操作(函数)定义为虚函数。
那么,析构函数自然也应该如此:如果它想析构子类中的重新定义或新的成员及对象,当然也应该声明为虚的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值