我写多线程踩的那些坑

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:

猜你喜欢

转载自blog.csdn.net/qq_36908710/article/details/84504018