谁能说一下在Qt中使用多线程都有哪些需要注意的事项呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁能说一下在Qt中使用多线程都有哪些需要注意的事项呢?相关的知识,希望对你有一定的参考价值。

在Qt中使用多线程,目前就我使用过的有两种,一是子类化QThread,重写run函数,在run函数里实现自己的代码,这一部分代码通常是比较耗时,或者干脆直接阻塞的。比如一个while循环,设置一个标志,判断循环结束。
这样的例子在网上有很多,就不写了。
这样写的话,会有一些东西需要了解。
子类化QThread的方法,只有run函数里面的内容是执行在子线程里的,其他的部分,比如槽函数什么的还是在主线程里执行(假设是在主线程开启的该子线程)。
还有一种方法,是子类化QObject,新建一个线程,然后使用MoveToThread把这个类的对象移到新建的线程中,这种做法使得它所有的槽函数都是执行在新开辟的线程里面。
如果直接(QObject对象).abc()的话,这个成员函数是在主进程内执行,可能会出现"QObject::killTimer: timers
cannot be stopped from another thread"的运行错误。
使用第二种方法的话,貌似会遇到这样的问题:如果在一个槽函数中把子线程阻塞,其他的槽函数无法接受来自主线程
参考技术A 需要注意的内容如下:
业务对象, 构造的时候不能指定父对象
- 子线程中不能处理ui窗口(ui相关的类)
- 子线程中只能处理一些数据相关的操作
- 需要在主线程中处理窗口相关的操作
学习QT的更多知识,可以关注黑马程序员,更多知识可供学习哦!本回答被提问者采纳

SAP FI 系列 005:业务范围切换都有哪些注意事项?

参考技术A

业务范围的切换在 SAP 中比较常见,比如公司之前没有使用业务范围,后来要使用;业务范围因为事业规划合并和切分等等。业务范围切换涉及到 FI 与其它模块的集成,结合项目中实际切换的总结,谈谈注意事项。

首先顾问应该把 SAP 关于业务范围派生的规则好好熟悉一下,比如看看 SAP Help。应收应付账款如何派生?固定资产如何派生?物料移动如何派生等等。可以参考我之前的一篇文章: SAP FI 系列 002:业务范围派生 。

SAP 采购业务主要有三步:创建采购订单(Purchasing Order, PO),采购收货 (Goods Receipts)和发票校验 (Invoice Verification)。在进行业务范围切换的时候,业务进行哪一步,状态肯定是不统一的。对采购业务应该如何切换呢?

PO 单据本身没有业务范围这个字段,收货和发票校验时,根据派生规则(比如工厂,工厂+物料等),派生出业务范围。这个业务范围会计入到 GR/IR 这个中间科目。所以切换的时候,要将 GR/IR 科目的业务范围切换到新的业务范围 ,避免跨业务范围问题。对已经创建还没有收货的 PO,可以将数据导出,切换后再导入;对已经收货还没有发票校验的 PO,可以取消收货行,在切换后再重新收货。当然, 部分收货还得关闭当前 PO,创建新的 PO。

总结一些采购业务的切换要点:

生产订单单据中有业务范围字段,并且不能修改。如果工厂对应的业务范围变更,并且原生产订单继续使用,在后续业务中会产生跨业务范围的问题。比如生产订单完工入库时:

借:制成品 <----- 工厂新的业务范围
贷:生产成本转出 <------工厂旧的业务范围

所以对没有完结的生产订单,要解决在制品 (WIP)业务范围变更问题,可以采取假退料的方式操作:将生产订单的状态改为 TECO,结算后关闭。然后再对未完成部分创建新的生产订单。

还有成本收集器,如果成本收集器与生产订单关联,则要结清生产订单的在制品(如上所述);如果成本收集器与生产版本关联,则要在成本收集器结算后做删除标记,重新创建新的成本收集器。

销售订单的行项目 (line item) 中有业务范围字段,未结清的销售订单可以关闭后重建,或者新增行项目。

可以关闭原有内部订单后重建。

成本中心转换业务范围,可以在成本中心主数据中新增时间段。

固定资产转换业务范围,只能新建固定资产后,用固定资产转移的方法。两个细节:

借:折旧费用 <----原业务范围
贷:累计折旧 <----原业务范围

实际过账时,SAP 发现固定资产主数据的成本中心所对应的业务范围与原业务范围不同,则会强制改变折旧费用科目的业务范围,也就是说出现借贷方的业务范围不同。但这个时候呢,会同时触发 KI 188 错误消息 -- 系统检测到成本中心的业务范围不符。要将 KI188 消息类型改为警告。

财务数据的转移,分为会计科目余额结转和行项目结转。行项目结转,要注意基准日、币别等因素,不能因为切换到期日、账龄数据等。

以上是关于谁能说一下在Qt中使用多线程都有哪些需要注意的事项呢?的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView 在开发过程中都有哪些坑

由“Qt程序运行一段时间后崩溃”引发的“opancv库中Mat::clone()函数”在多线程下的注意事项

谁能说一下socket.io的详细工作流程

SAP FI 系列 005:业务范围切换都有哪些注意事项?

英国Essay怎么写?都有哪些注意事项?

Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)