//要得到返回值 to do.... int JtEventServer::DoInSync(AsyncEvent Event) { int res = -1; if(IsInThread()) { res = Event.m_Functor(Event.m_Cmd,Event.m_Seq); } else { if(1)///////////////?????????????????????????? z在那个线程循环时才发的??????to do。。。。。 { // 1.先添加把异步Affair的同步成员初始完毕 ST_AFFAIR_CALLBACK AffairCallBack((long)this,NULL,NULL,-1); tr1::shared_ptr<CCachedAffair> pCachedAffairItem(new CCachedAffair(&AffairCallBack)); unsigned long long AffairId = CCachedAffairMap::Static_PushNewAffair_Pre(m_cachedMap, m_Lock , pCachedAffairItem, Event.m_Seq, Event.m_Cmd, Event.m_Cmd); ExCommand Head; Head.nSrcType = 0; Head.nCmdType = Event.m_Cmd; Head.nCmdSeq = Event.m_Seq; Head.nContentSize = 0; { //lock.... JtMutexAutoLock L(m_EventLock); m_AsynEventS.push_back(Event); } if(!InHandling) { res = pEventPairPipe->SendCmd((const char*)&Head, sizeof(Head)); if(res) { CCachedAffairMap::Static_CancelAffair_Pre(m_cachedMap, m_Lock, Event.m_Seq); jtprintf("[%s]Static_CancelAffair_Pre--------------------------------------\n", __FUNCTION__); return res; } } // 2.等待该同步事件 if(AffairCallBack.m_pOnGotData==NULL) { res = CCachedAffairMap::Static_PushNewAffair(m_cachedMap, m_Lock , pCachedAffairItem, Event.m_Seq); } } } if(res) jtprintf("[%s]res-------------------%d-------------------\n", __FUNCTION__, res); return res; }