exitmonitor.cpp
来自「一个很棒的网络控制系统仿真软件」· C++ 代码 · 共 45 行
CPP
45 行
#ifndef EXIT_MONITOR#define EXIT_MONITOR#include "moveready.cpp"void ttExitMonitor(char *nameOfMonitor) { MonitorNode* mn; Monitor* mon; TaskNode* tn; mn = (MonitorNode*) rtsys->monitorList->getFirst(); while (mn != NULL) { mon = mn->getMonitor(); if (mon->name != NULL) { if (strcmp(mon->name, nameOfMonitor) == 0) break; } mn = (MonitorNode*) mn->getNext(); } if (mn == NULL) { // Monitor does not exist char buf[200]; sprintf(buf, "ttExitMonitor: Non-existent monitor '%s'!", nameOfMonitor); MEX_ERROR(buf); return; } if (mon->heldBy != rtsys->executing) { MEX_ERROR("ttExitMonitor: Only the task holding the monitor can exit from it!"); } mon = mn->getMonitor(); mon->heldBy = NULL; tn = (TaskNode*) mon->waitingQ->getFirst(); if (tn != NULL) { moveToReadyQ(tn->getTask()); mon->heldBy = tn->getTask(); mon->waitingQ->deleteNode(tn); } rtsys->executing->priority = rtsys->executing->assignedPriority;}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?