Op 24/02/2016 om 10:22 schreef Lorenz Haas:
Hi André,
That should work just fine, with the exception of using &m_thread as a
member.
thanks for your answer. I am, however, not sure what you mean
regarding the m_thread member. For a better understanding here is a
working example I have in mind:
Ah, so you want a per-object thread.
I guess your design is possible. I'm not sure it is a good idea though.
Depending on what API you expose, you will have to assume that the
methods called on your class are called from another thread. Or, worse,
the caller needs to be aware of that. That gets ugly quite fast if the
things you want to expose are not as trivial as your example below...
André
**************************************************
#include <QtCore>
class Foo : public QObject
{
Q_OBJECT
public:
Foo() : QObject(nullptr) {
moveToThread(&m_thread);
m_thread.start();
}
~Foo() {
m_thread.quit();
m_thread.wait();
}
void printFooInformation() const {
qDebug() << "foo affinity" << thread();
}
void printThreadInformation() const {
qDebug() << "m_thread affinity" << m_thread.thread();
}
private:
QThread m_thread;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "GUI affinity" << a.thread();
Foo *foo = new Foo;
foo->printThreadInformation();
foo->printFooInformation();
return a.exec();
}
#include "main.moc"
**************************************************
Of course, every instance of Foo would create a new thread and
therefor multiple instance of Foo would _not_ share the same thread.
Did you mean that? (In my special case this is intended.)
Lorenz
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest