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 + -
显示快捷键?