3

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

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

QtCore:

QtGui:

我敢肯定还有更多。

4

1 回答 1

1

我有几点-

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

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

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

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

于 2010-04-11T16:01:39.247 回答