哪个Qt类直接使用磁盘?

时间:2010-04-11 13:50:40

标签: multithreading user-interface qt disk

我正在尝试编写一个库来将所有磁盘活动分离到自己的线程中,但文档并不真正关心这些事情。

我想要完成的是,除了启动之外,所有磁盘活动都是异步的,为此,我需要包装每个访问磁盘的类。这是我到目前为止所发现的:

QtCore:

QtGui:

我确信还有更多。

1 个答案:

答案 0 :(得分:1)

我有几点 -

首先,当你这样做时,请记住所有GUI对象都基于QWidget,已经在启动线程中运行。请参阅有关线程的http://doc.trolltech.com/4.6/threads-qobject.html。引用是“尽管QObject是可重入的,但GUI类,尤其是QWidget及其所有子类,都不是可重入的。它们只能在主线程中使用。如前所述,QCoreApplication :: exec()也必须从中调用线程”。

这也意味着如果您需要在屏幕上显示其中一个包装类的信息,那么在将信息传递回GUI线程时,需要注意对象的所有权。特别是任何基于QObject的东西。

其次,启动线程会带来运行时成本。因此,我建议您构建设计,以最大限度地减少创建和销毁此包装线程类的次数。

总体来说,这是一种有趣的文件方法。这是我将要考虑的当前应用程序。它可以解决我遇到的一些问题。