程序由 服务器端(vc++2005编译 console app) 与客户端组成服务器端:端口监测-有客户端连接-根据客户端请求产生sql查询数据库-响应客户端请求返回指定数目记录客户端:产生sql查询语句(由ip,port)发送到服务器-接收服务器传回的记录
同一时间内单个用户 请求 都能正确返回记录当多个 客户端同时连接 服务器  当某个客户端的返回记录请求还没有处理完毕这时又有新的客户端请求 
服务器端又要产生新的记录集合 造成记录返回错误因为假如 客户端请求的查询 服务器端命中了10000条 客户端又要全部返回记录 耗时会很长 在这期间很有可能
又有新的客户端请求 之前服务器产生的 查询结果集 会被新的查询替换 
不知道我说清楚没有 
要用到多线程解决这个问题吗  ? 还是有别的更好的解决办法?

解决方案 »

  1.   

    帮忙顶一下,让了解的人来解答.btw:他妈的,我还是CSDN论坛首页的常驻专家门诊(JAVA板块)呢,居然在JAVA板块既不能发新贴,也不能回复。
    btw:郁闷,加的好友太多了,现在加好友都是非法请求了。连好友页面也打不开。连私信页面也打不开。
    btw:CSDN当时没有测试过加好友很多的情况的吗?郁闷。现在一点加好友就出错。
      

  2.   

    ADO是线程不安全的,你应该确保每个线程都有自己的会话。所以最好的办法还是使用多线程来解决你的问题
      

  3.   

    Ado  是在每个会话线程中 动态创建的  
    我把主要函数 列出来 帮忙看如何写成多线程好吗  主函数(启动检测)int _tmain(int argc, _TCHAR* argv[])
    {
     return statserv_main(argc, argv, bend_init, bend_close);
    }
    初始化bend_initresult *bend_init(bend_initrequest *q)
    {...
    }
    返回记录int ztest_fetch(void *handle, bend_fetch_rr *r)
    {
    }
    关闭会话void bend_close(void *handle)
    {
        CoUninitialize(); 
        xfree (handle);              /* release our user-defined handle */
        return;
    }
    如何组配成一个线程会话呢 ?  谢谢
      

  4.   

    首先RecordSet是不是全局的,如果是就用局部变量。
    其次RecordSet采用客户端游标。