#include // nur auf SUNs: union semun { int val; struct semid_ds *buf; ushort_t *array; }; // class semarray { private: bool creator; // neu angelegt oder nicht? int semid,numsem; // System-ID, Anzahl const char *lockfile; // Name des Lockfiles struct sembuf *sembuffer; // Puffer fur semop void init_creator(const char *, int); void sem_up_down(int semnum, int value); void sdown_sup(va_list &va, int size, int value); public: // Konstruktoren/Destruktor semarray(const char *lockfile, int size, int value); semarray(const char *lockfile, int size, const int *valarray); semarray(const char *lockfile); ~semarray(); int id() const { return semid; } // ID-Abfrage void down(int num=0) { sem_up_down(num,-1); } // down fur einen Sem. void up(int num=0) { sem_up_down(num,1); } // up fur einen Sem. void sdown(int size, ...); // simultanes down void sup(int size, ...); // simultanes up };