1.在做多线程时应当做接口互斥。
2.多线程中使用block和non-block混合使用可以提高效率。
3.在混合使用block和non-block时应当注意block时不应拥有mutex.
//std::find_if(std::begin(set.fd_array), std::end(set.fd_array), [&](SOCKET val) {if (val > max)max = val; return false; });
max++;
#endif
//if messageSock.size() > FD_SETSIZE. //FD_SETSIZE :linux :1024, windows:64
if (messageSock.size() > FD_SETSIZE)
{
//if messageSock.size > FD_SETSIZE, API-select non-block...
ptv = &tv;
}
lock_M.unlock();//因为select可能是阻塞的.
//------select--------------------
int iRet = select(max, &set, NULL, NULL, ptv);
if (SOCKET_ERROR == iRet)
{
int errorcode = ErrorCallback(TRUE, ERR_SETSOCKOPT);
//dispose error.
switch (errorcode)
{
//if set include invalid socket.
#ifdef WIN32
case WSAENOTSOCK: