int main() { int semid=creatSemSet(1); initSemSet(semid,0); pid_t id=fork(); if(id==0) { int semid=getSemSet(); while(1) { P(semid); printf("A"); fflush(stdout); usleep(10031); printf("A"); fflush(stdout); usleep(10021); V(semid); } } else { while(1) { P(semid); printf("B"); fflush(stdout); usleep(10051); printf("B"); fflush(stdout); usleep(10003); V(semid); } } destorySemSet(semid); }
SemaphoreSet::SemaphoreSet(const string& pathName, char id, const InitValues& initVals, bool ownResources) : Resource(ownResources), _semId(initSemSet(pathName, id, initVals)), _nSems(initVals.size()) { }
SemaphoreSet::SemaphoreSet(const string& pathName, char id, size_t nSems, int initVals[], bool ownResources) : Resource(ownResources), _semId(initSemSet(pathName, id, InitValues(initVals, initVals + nSems))), _nSems(nSems) { }