本文整理汇总了C++中Task::attach方法的典型用法代码示例。如果您正苦于以下问题:C++ Task::attach方法的具体用法?C++ Task::attach怎么用?C++ Task::attach使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Task
的用法示例。
在下文中一共展示了Task::attach方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: action
void Sched::action(Listener* obj, int e) { __logc;
int idx;
unordered_set<Task*>::iterator it;
Task *t = dynamic_cast<Task*>(obj);
logger.print("obj = %p, e = %x", obj, e);
if (t == NULL)
logger.raise("dynamic_cast<Task*>");
if (e & E_FINISHED) {
if ((it = running.find(t)) == running.end())
logger.raise("running not found");
idx = std::find(assoc, assoc + P, t) - assoc;
if (idx == P)
logger.raise("assoc not found");
running.erase(it);
t->detach();
if (pending.empty()) {
assoc[idx] = NULL;
busy[idx] = false;
} else {
it = pending.begin();
(*it)->attach(procs[idx]);
assoc[idx] = *it;
pending.erase(it);
running.insert(assoc[idx]);
}
} else if (e & E_ERROR) {
idx = std::find(assoc, assoc + P, t) - assoc;
if (idx == P)
throw "Sched assoc not found";
t->detach();
delete procs[idx];
procs[idx] = new Subprocess(sorting.c_str());
t->attach(procs[idx]);
} else {
throw "Sched received unknown message";
}
}