本文整理汇总了C++中internaljob::Pointer::IsConflicting方法的典型用法代码示例。如果您正苦于以下问题:C++ Pointer::IsConflicting方法的具体用法?C++ Pointer::IsConflicting怎么用?C++ Pointer::IsConflicting使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类internaljob::Pointer
的用法示例。
在下文中一共展示了Pointer::IsConflicting方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FindBlockingJob
InternalJob::Pointer JobManager::FindBlockingJob(InternalJob::Pointer waitingJob)
{
if (waitingJob->GetRule() == 0)
return InternalJob::Pointer(nullptr);
{
Poco::ScopedLock<Poco::Mutex> managerLock (m_mutex);
if (m_running.empty() )
{
InternalJob::Pointer dummy;
return (dummy);
}
//check the running jobs
bool hasBlockedJobs = false;
QSet<InternalJob::Pointer>::Iterator it;
for ( it = m_running.begin(); it != m_running.end(); it ++ )
{
InternalJob::Pointer sptr_job = *it ++;
if (waitingJob->IsConflicting(sptr_job))
return sptr_job;
if (!hasBlockedJobs)
hasBlockedJobs = sptr_job->Previous() != 0;
}
// there are no blocked jobs, so we are done
if (!hasBlockedJobs)
{
InternalJob::Pointer dummy;
return (dummy);
}
//check all jobs blocked by running jobs
QSet<InternalJob::Pointer>::Iterator it_blocked;
for( it_blocked = m_running.begin(); it_blocked != m_running.end(); it_blocked ++ )
{
InternalJob::Pointer sptr_job = *it_blocked ++;
while (true)
{
sptr_job = sptr_job->Previous();
if (sptr_job == 0)
break;
if (waitingJob->IsConflicting(sptr_job))
return sptr_job;
}
}
}
InternalJob::Pointer sptr_null;
return (sptr_null);
}
示例2: CanOvertake
bool JobQueue::CanOvertake(InternalJob::Pointer newEntry,
InternalJob::Pointer queueEntry)
{
//can never go past the end of the queue
if (queueEntry == dummy.GetPointer())
return false;
//if the new entry was already in the wait queue, ensure it is re-inserted in correct position (bug 211799)
if (newEntry->GetWaitQueueStamp() > 0 && newEntry->GetWaitQueueStamp()
< queueEntry->GetWaitQueueStamp())
return true;
//if the new entry has lower priority, there is no need to overtake the existing entry
if ((queueEntry == newEntry))
return false;
// the new entry has higher priority, but only overtake the existing entry if the queue allows it
InternalJob::Pointer sptr_queueEntry(queueEntry);
return m_allowConflictOvertaking || !newEntry->IsConflicting(sptr_queueEntry);
}