本文整理汇总了C++中QThread::setPriority方法的典型用法代码示例。如果您正苦于以下问题:C++ QThread::setPriority方法的具体用法?C++ QThread::setPriority怎么用?C++ QThread::setPriority使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QThread
的用法示例。
在下文中一共展示了QThread::setPriority方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setFormula
void SurfaceRenderWidget::setFormula( const QString &formula )
{
makeCurrent();
std::string std_formula = QStringToSTDString( formula );
QThread *currentThread = QThread::currentThread();
QThread::Priority current_priority = currentThread->priority();
currentThread->setPriority( QThread::LowPriority );
ShaderManager::ErrorCode error_code = sm->create_shader( std_formula );
currentThread->setPriority( current_priority );
callParsingComplete( error_code );
update();
}
示例2: _downAllArticles
void batch_download_wechat_msg_list::_downAllArticles()
{
//todo:加入多线程
g_nCurArticleLinkIndex = 0;
int nEachThread = g_urlContainer.size() / g_nThreadCount;
for (int iTd = 0; iTd < g_nThreadCount; ++iTd)
{
download_task* task = new download_task(iTd);
if (iTd < g_nThreadCount - 1)
task->setDownloadRange(iTd * nEachThread, (iTd + 1) * nEachThread - 1);
else if (iTd == g_nThreadCount - 1)
task->setDownloadRange(iTd * nEachThread, g_urlContainer.size() - 1);
QEventLoop loop;
QThread* td = new QThread(this);
QLabel* label = new QLabel(this);
td->setPriority(QThread::HighestPriority);
task->moveToThread(td);
ui.statusLayout->addWidget(label, Qt::AlignJustify);
ui.statusLayout->update();
m_labels[iTd] = label;
connect(td, SIGNAL(started()), task, SLOT(onThreadTaskStart()));
connect(task, SIGNAL(downloadFinished()), td, SLOT(quit()));
connect(task, SIGNAL(notifyUpdateLogUI(const QString&)), this, SLOT(onUpdateLogUI(const QString&)));
connect(task, SIGNAL(oneArticleFinished()), this, SLOT(onOneArticleFinished()));
connect(td, SIGNAL(finished()), &loop, SLOT(quit()));
connect(task, SIGNAL(notifyUpdateStatusLabel(int,int)), this, SLOT(onNotifyUpdateStatusLabel(int,int)));
td->start();
}
ui.statusLabel->setText("准备就绪");
}
示例3: importLibrary
TreeItem* TraktorFeature::importLibrary(QString file) {
//Give thread a low priority
QThread* thisThread = QThread::currentThread();
thisThread->setPriority(QThread::LowestPriority);
//Invisible root item of Traktor's child model
TreeItem* root = NULL;
//Delete all table entries of Traktor feature
ScopedTransaction transaction(m_database);
clearTable("traktor_playlist_tracks");
clearTable("traktor_library");
clearTable("traktor_playlists");
transaction.commit();
transaction.transaction();
QSqlQuery query(m_database);
query.prepare("INSERT INTO traktor_library (artist, title, album, year,"
"genre,comment,tracknumber,bpm, bitrate,duration, location,"
"rating,key) VALUES (:artist, :title, :album, :year,:genre,"
":comment, :tracknumber,:bpm, :bitrate,:duration, :location,"
":rating,:key)");
//Parse Trakor XML file using SAX (for performance)
QFile traktor_file(file);
if (!traktor_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Cannot open Traktor music collection";
return NULL;
}
QXmlStreamReader xml(&traktor_file);
bool inCollectionTag = false;
//TODO(XXX) is this still needed to parse the library correctly?
bool inEntryTag = false;
bool inPlaylistsTag = false;
bool isRootFolderParsed = false;
int nAudioFiles = 0;
while (!xml.atEnd() && !m_cancelImport) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == "COLLECTION") {
inCollectionTag = true;
}
// Each "ENTRY" tag in <COLLECTION> represents a track
if (inCollectionTag && xml.name() == "ENTRY" ) {
inEntryTag = true;
//parse track
parseTrack(xml, query);
++nAudioFiles; //increment number of files in the music collection
}
if (xml.name() == "PLAYLISTS") {
inPlaylistsTag = true;
} if (inPlaylistsTag && !isRootFolderParsed && xml.name() == "NODE") {
QXmlStreamAttributes attr = xml.attributes();
QString nodetype = attr.value("TYPE").toString();
QString name = attr.value("NAME").toString();
if (nodetype == "FOLDER" && name == "$ROOT") {
//process all playlists
root = parsePlaylists(xml);
isRootFolderParsed = true;
}
}
}
if (xml.isEndElement()) {
if (xml.name() == "COLLECTION") {
inCollectionTag = false;
}
if (xml.name() == "ENTRY" && inCollectionTag) {
inEntryTag = false;
}
if (xml.name() == "PLAYLISTS" && inPlaylistsTag) {
inPlaylistsTag = false;
}
}
}
if (xml.hasError()) {
// do error handling
qDebug() << "Cannot process Traktor music collection";
if (root)
delete root;
return NULL;
}
qDebug() << "Found: " << nAudioFiles << " audio files in Traktor";
//initialize TraktorTableModel
transaction.commit();
return root;
}
示例4: importLibrary
// This method is executed in a separate thread
// via QtConcurrent::run
TreeItem* ITunesFeature::importLibrary() {
//Give thread a low priority
QThread* thisThread = QThread::currentThread();
thisThread->setPriority(QThread::LowestPriority);
//Delete all table entries of iTunes feature
ScopedTransaction transaction(m_database);
clearTable("itunes_playlist_tracks");
clearTable("itunes_library");
clearTable("itunes_playlists");
transaction.commit();
qDebug() << "ITunesFeature::importLibrary() ";
transaction.transaction();
// By default set m_mixxxItunesRoot and m_dbItunesRoot to strip out
// file://localhost/ from the URL. When we load the user's iTunes XML
// configuration we may replace this with something based on the detected
// location of the user's iTunes path but the defaults are necessary in case
// their iTunes XML does not include the "Music Folder" key.
m_mixxxItunesRoot = "";
m_dbItunesRoot = localhost_token();
//Parse iTunes XML file using SAX (for performance)
QFile itunes_file(m_dbfile);
if (!itunes_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Cannot open iTunes music collection";
return NULL;
}
QXmlStreamReader xml(&itunes_file);
TreeItem* playlist_root = NULL;
while (!xml.atEnd() && !m_cancelImport) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == "key") {
QString key = xml.readElementText();
if (key == "Music Folder") {
if (readNextStartElement(xml)) {
guessMusicLibraryMountpoint(xml);
}
} else if (key == "Tracks") {
parseTracks(xml);
playlist_root = parsePlaylists(xml);
}
}
}
}
itunes_file.close();
// Even if an error occured, commit the transaction. The file may have been
// half-parsed.
transaction.commit();
if (xml.hasError()) {
// do error handling
qDebug() << "Cannot process iTunes music collection";
qDebug() << "XML ERROR: " << xml.errorString();
if (playlist_root)
delete playlist_root;
playlist_root = NULL;
}
return playlist_root;
}
示例5: QThread
AssignmentClient::AssignmentClient(Assignment::Type requestAssignmentType, QString assignmentPool,
quint16 listenPort, QUuid walletUUID, QString assignmentServerHostname,
quint16 assignmentServerPort, quint16 assignmentMonitorPort) :
_assignmentServerHostname(DEFAULT_ASSIGNMENT_SERVER_HOSTNAME)
{
LogUtils::init();
QSettings::setDefaultFormat(QSettings::IniFormat);
DependencyManager::set<AccountManager>();
auto scriptableAvatar = DependencyManager::set<ScriptableAvatar>();
auto addressManager = DependencyManager::set<AddressManager>();
auto scriptEngines = DependencyManager::set<ScriptEngines>();
// create a NodeList as an unassigned client, must be after addressManager
auto nodeList = DependencyManager::set<NodeList>(NodeType::Unassigned, listenPort);
auto animationCache = DependencyManager::set<AnimationCache>();
auto entityScriptingInterface = DependencyManager::set<EntityScriptingInterface>(false);
DependencyManager::registerInheritance<EntityActionFactoryInterface, AssignmentActionFactory>();
auto actionFactory = DependencyManager::set<AssignmentActionFactory>();
DependencyManager::set<ResourceScriptingInterface>();
// setup a thread for the NodeList and its PacketReceiver
QThread* nodeThread = new QThread(this);
nodeThread->setObjectName("NodeList Thread");
nodeThread->start();
// make sure the node thread is given highest priority
nodeThread->setPriority(QThread::TimeCriticalPriority);
// put the NodeList on the node thread
nodeList->moveToThread(nodeThread);
// set the logging target to the the CHILD_TARGET_NAME
LogHandler::getInstance().setTargetName(ASSIGNMENT_CLIENT_TARGET_NAME);
// make sure we output process IDs for a child AC otherwise it's insane to parse
LogHandler::getInstance().setShouldOutputProcessID(true);
// setup our _requestAssignment member variable from the passed arguments
_requestAssignment = Assignment(Assignment::RequestCommand, requestAssignmentType, assignmentPool);
// check for a wallet UUID on the command line or in the config
// this would represent where the user running AC wants funds sent to
if (!walletUUID.isNull()) {
qCDebug(assigmnentclient) << "The destination wallet UUID for credits is" << uuidStringWithoutCurlyBraces(walletUUID);
_requestAssignment.setWalletUUID(walletUUID);
}
// check for an overriden assignment server hostname
if (assignmentServerHostname != "") {
// change the hostname for our assignment server
_assignmentServerHostname = assignmentServerHostname;
}
_assignmentServerSocket = HifiSockAddr(_assignmentServerHostname, assignmentServerPort, true);
_assignmentServerSocket.setObjectName("AssigmentServer");
nodeList->setAssignmentServerSocket(_assignmentServerSocket);
qCDebug(assigmnentclient) << "Assignment server socket is" << _assignmentServerSocket;
// call a timer function every ASSIGNMENT_REQUEST_INTERVAL_MSECS to ask for assignment, if required
qCDebug(assigmnentclient) << "Waiting for assignment -" << _requestAssignment;
if (_assignmentServerHostname != "localhost") {
qCDebug(assigmnentclient) << "- will attempt to connect to domain-server on" << _assignmentServerSocket.getPort();
}
connect(&_requestTimer, SIGNAL(timeout()), SLOT(sendAssignmentRequest()));
_requestTimer.start(ASSIGNMENT_REQUEST_INTERVAL_MSECS);
// connections to AccountManager for authentication
connect(DependencyManager::get<AccountManager>().data(), &AccountManager::authRequired,
this, &AssignmentClient::handleAuthenticationRequest);
// Create Singleton objects on main thread
NetworkAccessManager::getInstance();
// did we get an assignment-client monitor port?
if (assignmentMonitorPort > 0) {
_assignmentClientMonitorSocket = HifiSockAddr(DEFAULT_ASSIGNMENT_CLIENT_MONITOR_HOSTNAME, assignmentMonitorPort);
_assignmentClientMonitorSocket.setObjectName("AssignmentClientMonitor");
qCDebug(assigmnentclient) << "Assignment-client monitor socket is" << _assignmentClientMonitorSocket;
// Hook up a timer to send this child's status to the Monitor once per second
setUpStatusToMonitor();
}
auto& packetReceiver = DependencyManager::get<NodeList>()->getPacketReceiver();
packetReceiver.registerListener(PacketType::CreateAssignment, this, "handleCreateAssignmentPacket");
packetReceiver.registerListener(PacketType::StopNode, this, "handleStopNodePacket");
}
示例6: importLibrary
// This method is executed in a separate thread
// via QtConcurrent::run
TreeItem* ITunesFeature::importLibrary() {
bool isTracksParsed=false;
bool isMusicFolderLocatedAfterTracks=false;
//Give thread a low priority
QThread* thisThread = QThread::currentThread();
thisThread->setPriority(QThread::LowPriority);
//Delete all table entries of iTunes feature
ScopedTransaction transaction(m_database);
clearTable("itunes_playlist_tracks");
clearTable("itunes_library");
clearTable("itunes_playlists");
transaction.commit();
qDebug() << "ITunesFeature::importLibrary() ";
transaction.transaction();
// By default set m_mixxxItunesRoot and m_dbItunesRoot to strip out
// file://localhost/ from the URL. When we load the user's iTunes XML
// configuration we may replace this with something based on the detected
// location of the user's iTunes path but the defaults are necessary in case
// their iTunes XML does not include the "Music Folder" key.
m_mixxxItunesRoot = "";
m_dbItunesRoot = localhost_token();
//Parse iTunes XML file using SAX (for performance)
QFile itunes_file(m_dbfile);
if (!itunes_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Cannot open iTunes music collection";
return NULL;
}
QXmlStreamReader xml(&itunes_file);
TreeItem* playlist_root = NULL;
while (!xml.atEnd() && !m_cancelImport) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == "key") {
QString key = xml.readElementText();
if (key == "Music Folder") {
if (isTracksParsed) isMusicFolderLocatedAfterTracks = true;
if (readNextStartElement(xml)) {
guessMusicLibraryMountpoint(xml);
}
} else if (key == "Tracks") {
parseTracks(xml);
if (playlist_root != NULL)
delete playlist_root;
playlist_root = parsePlaylists(xml);
isTracksParsed = true;
}
}
}
}
itunes_file.close();
if (isMusicFolderLocatedAfterTracks) {
qDebug() << "Updating iTunes real path from " << m_dbItunesRoot << " to " << m_mixxxItunesRoot;
// In some iTunes files "Music Folder" XML node is located at the end of file. So, we need to
QSqlQuery query(m_database);
query.prepare("UPDATE itunes_library SET location = replace( location, :itunes_path, :mixxx_path )");
query.bindValue(":itunes_path", m_dbItunesRoot.replace(localhost_token(), ""));
query.bindValue(":mixxx_path", m_mixxxItunesRoot);
bool success = query.exec();
if (!success) {
LOG_FAILED_QUERY(query);
}
}
// Even if an error occurred, commit the transaction. The file may have been
// half-parsed.
transaction.commit();
if (xml.hasError()) {
// do error handling
qDebug() << "Cannot process iTunes music collection";
qDebug() << "XML ERROR: " << xml.errorString();
if (playlist_root)
delete playlist_root;
playlist_root = NULL;
}
return playlist_root;
}