我写多线程踩的那些坑

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:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值