IOCP模型中 同一个缓冲区要发送给多个客户端 怎么才能安全释放这个缓冲区呢? 如果是引用计数的话那得事先知道要发送给多少个客户端 才好判断计数为0释放 有什么其它办法没有?

解决方案 »

  1.   

    void InternalSend(){
      InitCount(1);//初始化引用计数为1  while(findClient(condition)){/*匹配需要发送的对象*/
        addRef();//发送前增加引用计数
        if(!Send)
          releaseRef();//发送失败不会产生完成通知,减少引用计数
      }  releaseRef();//所有预期发送的对象匹配完毕,减少引用计数
    }
    void SendCompleted()
    {
      releaseRef();//处理完成,减少引用计数
    }
      

  2.   

    void InternalSend(){
      InitCount(1);//初始化引用计数为1  while(findClient(condition)){/*匹配需要发送的对象*/
        addRef();//发送前增加引用计数
        if(!Send)
          releaseRef();//发送失败不会产生完成通知,减少引用计数
      }  releaseRef();//所有预期发送的对象匹配完毕,减少引用计数
    }
    void SendCompleted()
    {
      releaseRef();//处理完成,减少引用计数
    }
      

  3.   

    void InternalSend(){
      InitCount(1);//初始化引用计数为1  while(findClient(condition)){/*匹配需要发送的对象*/
        addRef();//发送前增加引用计数
        if(!Send)
          releaseRef();//发送失败不会产生完成通知,减少引用计数
      }  releaseRef();//所有预期发送的对象匹配完毕,减少引用计数
    }
    void SendCompleted()
    {
      releaseRef();//处理完成,减少引用计数
    }
      

  4.   

    void InternalSend(){
      InitCount(1);//初始化引用计数为1  while(findClient(condition)){/*匹配需要发送的对象*/
        addRef();//发送前增加引用计数
        if(!Send)
          releaseRef();//发送失败不会产生完成通知,减少引用计数
      }  releaseRef();//所有预期发送的对象匹配完毕,减少引用计数
    }
    void SendCompleted()
    {
      releaseRef();//处理完成,减少引用计数
    }
      

  5.   

    void InternalSend(){
      InitCount(1);//初始化引用计数为1  while(findClient(condition)){/*匹配需要发送的对象*/
        addRef();//发送前增加引用计数
        if(!Send)
          releaseRef();//发送失败不会产生完成通知,减少引用计数
      }  releaseRef();//所有预期发送的对象匹配完毕,减少引用计数
    }
    void SendCompleted()
    {
      releaseRef();//处理完成,减少引用计数
    }