本文整理汇总了C++中Queue::Unlock方法的典型用法代码示例。如果您正苦于以下问题:C++ Queue::Unlock方法的具体用法?C++ Queue::Unlock怎么用?C++ Queue::Unlock使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Queue
的用法示例。
在下文中一共展示了Queue::Unlock方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc,char *argv[])
{
srand(time(NULL));
signal(SIGTERM,SIGTERMHandler);
GLOBAL_PROCESS_IDS *GPI = (GLOBAL_PROCESS_IDS*)
GetSHM(sizeof(GLOBAL_PROCESS_IDS),GLOBAL_MEM);
//Put values in global shared memory for other process to see
GPI->CarUnload = getpid();
Queue *Q = (Queue *) GetSHM(SHMSIZE,TOURISTS_Q);
int size = GPI->CarCapacity*sizeof(TouristInfo);
Queue *CarTable = (Queue *) GetSHM(size+sizeof(Queue),CAR_TABLE);
Queue *TouristStatus = (Queue *) GetSHM(SHMSIZE,TOURISTS_STAT);
TouristStatus->Queue_INIT(SHMSIZE-sizeof(Queue),TOURISTS_STAT);
SignalHandler::WaitForSignal(SIGCONT);
while(flag)
{
CarTable->Lock();
cout<<"Locked";
while(CarTable->Size() > 0)
{
sleep(1);
int elem = CarTable->Pop(true);
kill(elem,SIGCONT);
cout<<RED<<"\nRemoving User:"<<elem<<DEFAULT<<flush;
//if(false)
if( R(100) < GPI->Probabilty)
{
Q->Push(elem);
kill(elem,SIGCONT);
cout<<GREEN<<"\nInserting User:"<<elem<<" back to Queue."<<DEFAULT<<flush;
}
else kill(elem,SIGTERM);
TouristStatus->Push(elem);
}
CarTable->Unlock();
//sleep(2);//simulate working....
GPI->CarMode = CARMODES::READY;
cout<<GREEN<<"\nCarMode READY\n"<<DEFAULT<<flush;
SignalHandler::WaitForSignal(SIGCONT);
}
cout<<RED<<endl<<argv[0]<<" Exiting..\n"<<DEFAULT<<flush;
//shmdt(Q);
//shmdt(GPI);
//shmdt(CarTable);
//shmdt(TouristStatus);
return 0;
}