void SActivityThread::processEvents()
{
    SPostEventList postEventList;
    bool copyOk = true;;
    mPostEventListMutex.lock();
    try
    {
        postEventList = mPostEventList;
        mPostEventList.clear();
    }
    catch(...)
    {
        copyOk = false;
    }
    mPostEventListMutex.unlock();
    if(!copyOk)
    {
        mExit = true;
        mRetCode = PROCESS_EVENT_ERROR;
        return;
    }
    SPostEventList eventHasNotHandle;
    STimeMS currTime = STime::getCurrentTimeMS();
    for(SPostEventList::iterator it = postEventList.begin(); 
        it != postEventList.end(); it++)
    {
        SPostEvent* pe = *it;
        SEvent* e = pe->event;
        SObject* r = pe->receiver;
        if(e->getTriggerTime() <= currTime)
            sendEvent(r, e);
        else
            eventHasNotHandle.push_back(pe);
    } 
    releasePostEventList(postEventList);
    mPostEventListMutex.lock();
    for(SPostEventList::iterator it = eventHasNotHandle.begin() ; it != eventHasNotHandle.end() ; it++)
    {
        mPostEventList.push_back(*it);
    }
    mPostEventListMutex.unlock();
}