本文整理汇总了C++中TaskPtr::waitAcquired方法的典型用法代码示例。如果您正苦于以下问题:C++ TaskPtr::waitAcquired方法的具体用法?C++ TaskPtr::waitAcquired怎么用?C++ TaskPtr::waitAcquired使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TaskPtr
的用法示例。
在下文中一共展示了TaskPtr::waitAcquired方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: catch
void
PriorityInversionTest::run()
{
int cores, high, medium, low, timeout;
timeout = 30;
#ifdef _WIN32
return; //Priority inversion is not supported by WIN32
#else
try
{
IceUtil::Mutex m;
}
catch(const IceUtil::ThreadSyscallException&)
{
return; // Mutex protocol PrioInherit not supported
}
cores = static_cast<int>(sysconf(_SC_NPROCESSORS_ONLN));
high = 45;
medium = 35;
low = 1;
#endif
{
Monitor<Mutex> monitor;
TaskCollectorPtr collector = new TaskCollector(cores, high, medium, low, monitor);
vector<ThreadControl> threads;
SharedResourcePtr shared = new SharedResourceMutex(collector);
//
// Create one low priority thread.
//
TaskPtr lowThread = new Task(shared);
threads.push_back(lowThread->start(128, low));
lowThread->waitAcquired();
//
// Create one high priority thread that use the same shared resource
// as the previous low priority thread
//
TaskPtr highThread = new Task(shared);
threads.push_back(highThread->start(128, high));
//
// Create one medium priority thread per core.
//
for(int cont = 0; cont < cores; ++cont)
{
ThreadPtr t = new MediumPriorityThread(collector, highThread, timeout);
threads.push_back(t->start(128, medium));
}
//
// Join with all the threads.
//
vector<ThreadControl>::iterator it;
for(it = threads.begin(); it != threads.end(); ++it)
{
try
{
(*it).join();
}
catch(...)
{
}
}
}
//
// Same test with a recursive mutex.
//
{
Monitor<Mutex> monitor;
TaskCollectorPtr collector = new TaskCollector(cores, high, medium, low, monitor);
SharedResourcePtr shared = new SharedResourceRecMutex(collector);
vector<ThreadControl> threads;
//
// Create one low priority thread.
//
TaskPtr lowThread = new Task(shared);
threads.push_back(lowThread->start(128, low));
lowThread->waitAcquired();
//
// Create one high priority thread that use the same shared resource
// as the previous low priority thread.
//
ThreadPtr highThread = new Task(shared);
threads.push_back(highThread->start(128, high));
//
// Create one medium priority tasks per core that runs until
// the high priority thread is running.
//
for(int cont = 0; cont < cores; ++cont)
{
ThreadPtr t = new MediumPriorityThread(collector, highThread, timeout);
//.........这里部分代码省略.........