gpt4 book ai didi

multithreading - 哪些Qt类直接使用磁盘?

转载 作者:行者123 更新时间:2023-12-04 06:53:07 24 4
gpt4 key购买 nike

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

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

QtCore:

  • QFile
  • QTemporaryFile
  • QDir
  • QFileInfo
  • QFileSystemWatcher
  • QDirIterator
  • QSettings

  • QtGui:
  • QFileDialog
  • QFileSystemModel
  • QDirModel

  • 我敢肯定还有更多。

    最佳答案

    我有几点要点-

    首先,在执行此操作时,请记住所有GUI对象都是基于QWidget的,它们都已在启动线程中运行。参见http://doc.trolltech.com/4.6/threads-qobject.html,它讨论线程。引用为“尽管QObject是可重入的,但GUI类(尤其是QWidget及其所有子类)不是可重入的。只能在主线程中使用它们。如前所述,还必须从该主线程中调用QCoreApplication::exec()。线”。

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

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

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

    关于multithreading - 哪些Qt类直接使用磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617218/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com