Open
Description
同步调用的时候,最后一步是:
void CommunicatorEpoll::notify(size_t iSeq,ReqInfoQueue * msgQueue)
{
if(_notify[iSeq].bValid)
{
_ep.mod(_notify[iSeq].notify.getfd(),(long long)&_notify[iSeq].stFDInfo, EPOLLIN);
assert(_notify[iSeq].stFDInfo.p == (void*)msgQueue);
}
else
{
_notify[iSeq].stFDInfo.iType = FDInfo::ET_C_NOTIFY;
_notify[iSeq].stFDInfo.p = (void*)msgQueue;
_notify[iSeq].stFDInfo.fd = _notify[iSeq].eventFd;
_notify[iSeq].stFDInfo.iSeq = iSeq;
_notify[iSeq].notify.createSocket();
_notify[iSeq].bValid = true;
_ep.add(_notify[iSeq].notify.getfd(),(long long)&_notify[iSeq].stFDInfo, EPOLLIN);
}
}
这一步是吧fd加到了epoll的监听中,epoll监听收到了NOTIFY类型的消息,就会发送该消息,那是怎么触发epoll的呢?
Metadata
Metadata
Assignees
Labels
No labels