notifyall.cpp
来自「一个很棒的网络控制系统仿真软件」· C++ 代码 · 共 52 行
CPP
52 行
#ifndef NOTIFY_ALL#define NOTIFY_ALL#include "moveready.cpp"void ttNotifyAll(char *nameOfEvent) { EventNode* en; Event* ev; TaskNode *tn, *tmp; en = (EventNode*) rtsys->eventList->getFirst(); while (en != NULL) { if (en->getEvent()->name != NULL) { if (strcmp(en->getEvent()->name, nameOfEvent) == 0) break; } en = (EventNode*) en->getNext(); } if (en == NULL) { char buf[200]; sprintf(buf, "ttNotifyAll: Non-existent event '%s'!", nameOfEvent); MEX_ERROR(buf); return; } // Event exists ev = en->getEvent(); if (ev->isFree) { // Free event, move all waiting tasks to readyQ tn = (TaskNode*) ev->waitingQ->getFirst(); while (tn != NULL) { moveToReadyQ(tn->getTask()); tmp = tn; tn = (TaskNode*) tn->getNext(); ev->waitingQ->deleteNode(tmp); } } else { // Event associated with a monitor, move all waiting tasks to waitingQ of monitor tn = (TaskNode*) ev->waitingQ->getFirst(); while (tn != NULL) { tmp = tn; tn = (TaskNode*) tn->getNext(); ev->waitingQ->removeNode(tmp); ev->mon->waitingQ->appendNode(tmp); } }} #endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?