代码之家  ›  专栏  ›  技术社区  ›  György Andrasek

哪个Qt类直接使用磁盘?

  •  3
  • György Andrasek  · 技术社区  · 15 年前

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

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

    QtCore:

    QtGui:

    我相信还有更多。

    1 回复  |  直到 15 年前
        1
  •  1
  •   photo_tom    15 年前

    我有几点意见-

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

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

    第二,启动线程会带来运行时成本。因此,我建议您构造您的设计,以最小化这个包装线程类被创建和销毁的次数。

    总体而言,这是一种有趣的文件处理方法。这是我将在当前应用程序中考虑的一个。它可以解决我遇到的一些问题。