descriptormanager.cxx
来自「SP是一个基于GNU C++编译器」· CXX 代码 · 共 91 行
CXX
91 行
// Copyright (c) 1994 James Clark// See the file COPYING for copying permission.#include "splib.h"#include "DescriptorManager.h"#include "ListIter.h"#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifDescriptorUser::DescriptorUser(DescriptorManager *manager): manager_(manager){ if (manager_) manager_->addUser(this);}DescriptorUser::~DescriptorUser(){ if (manager_) manager_->removeUser(this);}void DescriptorUser::managerDeleted(){ manager_ = 0;}Boolean DescriptorUser::suspend(){ return 0;}void DescriptorUser::acquireD(){ if (manager_) manager_->acquireD();}void DescriptorUser::releaseD(){ if (manager_) manager_->releaseD();}DescriptorManager::DescriptorManager(int maxD): maxD_(maxD), usedD_(0){}DescriptorManager::~DescriptorManager(){ for (ListIter<DescriptorUser *> iter(users_); !iter.done(); iter.next()) iter.cur()->managerDeleted();}void DescriptorManager::addUser(DescriptorUser *p){ users_.insert(p);}void DescriptorManager::removeUser(DescriptorUser *p){ users_.remove(p);}void DescriptorManager::acquireD(){ if (usedD_ >= maxD_) { for (ListIter<DescriptorUser *> iter(users_); !iter.done(); iter.next()) { if (iter.cur()->suspend()) break; } } usedD_++;}void DescriptorManager::releaseD(){ usedD_--;}#ifdef SP_NAMESPACE}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?