www.pudn.com > 模拟银行家算法.zip > Banker.h
// Banker.h -- definitions for the Banker's algorothm // David L. Clarke 6 June 1998 // Modified by Steve Skrabacz Nov 1998 again September 1999 #ifndef BankerH #define BankerH #include using namespace std; class BankerUnsafeException {}; class BankerUnsafePidException : public BankerUnsafeException{}; class BankerUnsafeContractException : public BankerUnsafeException{}; class BankerUnsafeTotalException : public BankerUnsafeException{}; class BankerUnsafeCommittedException : public BankerUnsafeException{}; struct Resources { int iFiles; int iPages; int iMutex; }; typedef map< int, Resources, less > ResourcesMap; class Banker { private: Resources RMax; // total availabled in whole system Resources RInUse; // total in use in whole system ResourcesMap RMapMax; // total contracted with each PID ResourcesMap RMapInUse; // total in use for a given PID void isSafe(int iPid, int iFiles, int iPages, int iMutices); public: Banker(int iFiles, int iPages,int iMutices); ~Banker(); void openAccount(int iPID,int iFiles, int iPages,int iMutices); void closeAccount(int iPID); void request(int iPID, int iFiles,int iPages,int iMutices); void relinquish(int iPID, int iFiles, int iPages, int iMutices); void showLimits(); void helloWorld(); }; #endif