void StackHub::Add(Stack* stack) { typedef list<Stack*>::iterator iter; _Lock->Enter(); int id = stack->GetStackId(); for (iter i = _Stacks.begin(); i != _Stacks.end(); i++) { Stack* tmp = *i; if (tmp->GetStackId() == id) { _Lock->Leave(); return; } } _Stacks.push_back(stack); _Lock->Leave(); }
Stack* StackHub::Find(int id) { typedef list<Stack*>::iterator iter; _Lock->Enter(); Stack* stack = null; for (iter i = _Stacks.begin(); i != _Stacks.end(); i++) { Stack* tmp = *i; if (tmp->GetStackId() == id) { stack = tmp; break; } } _Lock->Leave(); return stack; }