📄 notifyall.cpp
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -