qt多线程简单触发式消息响应服务
来源:互联网 发布:我们走了一些弯路 知乎 编辑:程序博客网 时间:2024/06/02 02:32
使用的场景:
例如 大型超市的收银-多个收银柜台应对客户的买单需求
- 每个收银柜台相当于一个线程
- 收银柜台提供收银的服务,每次服务都是对客户买单事件的响应
反向设计来看:
// 收银服务: 提供对客户收银等服务
class BillService
{
event(QEvent e);
};
// 收银柜台:提供独立的收银线程环境,并一直等待客户
class BillThread
{
run();
}
- 收银服务对于客户来说,是互相独立,需要能并行的做;
一个收银柜台提供一个单通道的收银服务;
这样的话,收银柜台就需要有多个,才能并行的收银。 - 我们希望收银台一直开着,来了客户就能收银,不用一会开一会关。
- 我们希望一个柜台前可以排一个客户队伍,一个个先来先服务
这样就需要:
- 收银台线程一直是在等待服务状态
QThread线程的run处理中:放入QEventLoop,确保线程一直在提供服务。 - 收银服务提供排队服务的消息响应机制—QEvent机制
- 一个收银服务位于一个收银台线程中
- 每当客户排队来收银,排那个收银台,就给哪个收银服务发送QEvent买单请求,收银服务挨个处理即可
如果你有这个问题:为什么线程不能自己来响应线程内的Event呢?
对于Qt的线程来说,只有run里面的是多线程运行的,线程本身Object是属于父线程的,所以线程Object不能响应子线程里的Event;只有在run里面创建的Object/或moveToThread过来的Object,才算是线程上的Object,可以响应线程上的Event。
总体看这种设计
- 线程提供持续服务的独立运行环境;多个线程提供并发的该环境;
- 绑定线程的QEvent处理服务提供触发式队列请求的服务。
个人随笔 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
阅读全文
0 0
- qt多线程简单触发式消息响应服务
- QT之消息响应
- QT 自定义消息响应
- Qt 消息响应,
- qt按键消息的触发问题
- 关于QT的按键消息响应
- qt调用vlc响应windows消息
- qt调用vlc响应windows消息
- Qt多线程简单例子
- Qt多线程简单总结
- QT多线程简单例子
- 服务中如何响应系统消息
- QT HTTP 服务 代理服务器没有响应
- qt多线程的简单例子
- Qt: 多线程 就是这么简单
- Qt---多线程的简单实现
- Qt 多线程的简单应用
- QT QThread 简单实现多线程
- week10(下)
- Structs2 constant配置详解
- L1-020. 帅到没朋友
- Win10下安装TensorFlow(GPU版本)
- 解决win7系统黑屏问题
- qt多线程简单触发式消息响应服务
- 2597 团伙(并查集)
- CNN架构模型的发展以及各个主流网络的区别
- 记录--初次使用github。
- N-gram模型表示文本
- 对封装,继承,抽象类和接口的理解
- C++ 异常处理
- Spring 学习很瘦身2
- SpringMVC学习(九)——SpringMVC中实现文件上传