QT大杂烩(总)

一,进程间通信

进程间通信一共有八种方式:信号,信号量,管道,命名管道,消息队列,共享存储,套接字。

1,信号

通知进程中某个事件已经发生

2,信号量

信号量是一个计数器,用来控制多个进程访问共享资源,通常用作锁机制,防止当有一个进程访问共享资源时,其它进程也在访问,所以主要用作进程间或不同线程之间的同步手段

信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作。

3,管道

管道是一种半双工的通信方式,数据只能单向传输,并且必须是在有亲缘关系的进程使用,如父子进程。
缺点:只能接收无格式字节流,缓冲区大小受限。

4,命名管道

命名管道也是一种半双工的通信方式,但在不是亲缘关系的进程中也可以使用。
缺点:只能接收无格式字节流,缓冲区大小受限。
管道和命名管道相同点:内核缓冲区实现数据传输,是特殊文件存在内存中

5,消息队列

消息队列是将消息的链表存放在内核中并有消息队列标识符标识,
与管道相比优势是:可以指定消息类型,接收时不需要按照队列次序,可以接收想接收的数据。
优点:克服信息传输量少。

6,共享存储

共享存储是映射一段其他进程可以访问内存,内存是由进程创建,它的出现改变了进程间通信的效率,可以和其它通信方式配合使用,如信号量。
消息队列与管道在传输时需要在内核和用户空间拷贝数据四次,而共享内存则只要两次拷贝即可(输入文件到共享内存,共享内存到输出文件)。
优点:数据传输效率高。

7,套接字

二,进程和线程的区别

1,根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单温
2,开销方面:每个进程都有独立的数据空间,进程间切换开销较大,同一类线程共享数据空间,所以线程切换开销较小。
3,包含关系:线程可以看做是轻量级的进程,如果进程没有线程时可以将它看做是一个线程。

三,指针和引用的区别

1,指针是变量,存储变量的地址,引用是变量的别名,
2,指针可以多级,引用不能多级
3,指针在定义时可以不初始化,引用必须初始化
4,指针初始化后可以改变指向,引用一旦初始化就不能改变
5,sizeof()是指针的大小,引用是所指向变量的大小
6,指针可以指向空,引用不能指向空
7,指针作为变量传给形参时,两者指向的地址相同,但不是同一个变量,改变这个变量的指向不影响实参。

四,C和C++的区别

c是面向过程的编程语言,C++是面向对象的编程语言,所以问的是面向过程和面向对象的编程区别。
1,C++是把实现功能分为几个方法,c是把功能分为几个步骤实现
2,C++有封装,继承,多态。

四,说明多态

多态是C++特有的特征,定义:不同对象通过同一方法得到的结果不同

五,new 和malloc的区别

1,new是关键字, malloc是函数
2,new是动态申请大小,malloc在调用时需要写明大小
3,new申请失败会抛出异常,malloc会返回NULL
4,new申请成功后会返回对象类型指针,malloc返回void * 需要强转
5,new会调用对象痛的构造/析构函数 malloc不会调用。

六,信号和槽第五个参数

1,Qt::AutoConnection默认值:使用该值时连接类型将在信号发送是决定,如果发送者和接收者在同一线程时则自动使用Qt::DirectConnection类型,如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。

2,Qt::DirectConnection:槽函数在信号发送的时候直接被调用,发送者和接收者在同一线程时就像直接在信号发送位置调用槽函数
Emit语句后面的代码将在信号关联的所有槽函数执行完成后执行。
无论槽函数所属对象在那个线程,槽函数都在发射信号的线程内执行。

3,Qt::QueuedConnection:信号发送后将被放入到一个消息队列中,当对应的槽函数线程取得控制权时才取得该信号,然后执行槽函数。
可在同一线程和不同线程操作。
Emit语句后的代码将在信号发送后立即执行不需要等待槽函数的执行
槽函数在接收者所属线程执行。

4,Qt::BlockingQueuedConnection:槽函数的调用时机与3中相同,
不过发送信号后,发送者所在线程将会阻塞直到槽函数执行完成
发送者和接收者一定不在同一线程,否则将会产生死锁,
在多线程需要同步时可以使用这个参数值。

5,Qt::UniqueConnection:这个flag可以通过按位或(|)与以上四个结合在一起使用。当这个flag设置时,当某个信号和槽已经连接时,再进行重复的连接就会失败。也就是为了避免重复连接。

七,元对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值