📄 semaphore.cc.svn-base
字号:
/*****************************************************************************//* Betriebssysteme *//*---------------------------------------------------------------------------*//* *//* S E M A P H O R E *//* *//*---------------------------------------------------------------------------*//* Semaphore werden zur Synchronisation von Threads verwendet. *//*****************************************************************************/#include "meeting/semaphore.h"#include "thread/customer.h"#include "syscall/guarded_organizer.h"extern Guarded_Organizer scheduler;Semaphore::Semaphore(){ _z= 1;}Semaphore::Semaphore(int c){ _z = c;}Semaphore::~Semaphore(){}void Semaphore::p(){ Customer *cust = static_cast<Customer*>(scheduler.Scheduler::active()); if(_z==0) { enqueue(cust); scheduler.Organizer::block(*cust, *this); } else _z--;}void Semaphore::v(){ _z++; if (_z == 1) { Customer *cust = static_cast<Customer*>(dequeue()); if (cust!=NULL) { _z--; scheduler.Organizer::wakeup(*cust); } }}void Semaphore::wait(){ p(); }void Semaphore::signal(){ v(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -