Hi, In addition to what Sze-Howe told, you should consider the backend used by the Qt database driver. In your case of SQLite you could end up in a situtation where multiple simultaneous INSERT queries seriously degrade the performance of SQLite engine which uses file locks to isolate transactions.
Cheers 2014-08-18 12:26 GMT+06:00 Igor Mironchik <igor.mironc...@gmail.com>: > Hi. > > I want to move write to DB operation to another thread (from the GUI > thread). And I implemented the following QRunnable: > > > // > > // SourcesLogWritter > > // > > > class SourcesLogWritter > > : public QRunnable > > { > > public: > > SourcesLogWritter() > > { > > setAutoDelete( false ); > > } > > > void setData( const QDateTime & dateTime, > > const QString & channelName, > > Como::Source::Type type, > > const QString & sourceName, > > const QString & typeName, > > const QVariant & value, > > const QString & desc ) > > { > > m_dateTime = dateTime; > > m_channelName = channelName; > > m_type = type; > > m_sourceName = sourceName; > > m_typeName = typeName; > > m_value = value; > > m_desc = desc; > > } > > > void run() > > { > > QSqlQuery insert( QLatin1String( > > "INSERT INTO sourcesLog ( dateTime, channelName, type, " > > "sourceName, typeName, value, desc ) " > > "VALUES ( ?, ?, ?, ?, ?, ?, ? )" ) ); > > > insert.addBindValue( dateTimeToString( m_dateTime ) ); > > insert.addBindValue( m_channelName ); > > insert.addBindValue( (int) m_type ); > > insert.addBindValue( m_sourceName ); > > insert.addBindValue( m_typeName ); > > insert.addBindValue( m_value.toString() ); > > insert.addBindValue( m_desc ); > > > insert.exec(); > > } > > > private: > > QDateTime m_dateTime; > > QString m_channelName; > > Como::Source::Type m_type; > > QString m_sourceName; > > QString m_typeName; > > QVariant m_value; > > QString m_desc; > > }; // class SourcesLogWritter > > Is it OK to launch this runnable every time when I need to write to the log? > > I do the following: > > d->m_sourcesLogWritter->setData( dateTime, channelName, > > type, sourceName, typeName, value, desc ); > > > QThreadPool::globalInstance()->start( > > d->m_sourcesLogWritter.data() ); > > And what if previous operation is still not finished and I will launch > another? > > Thanks. > > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest > _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest