免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2824 | 回复: 5
打印 上一主题 下一主题

[C++] socket服务器的数据库操作的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-10 10:27 |只看该作者 |倒序浏览
请问在Socket服务器上的OnRecv()函数里要进行数据库操作的话,就是说收到数据就进行数据操作,写入数据库等等,会不会对服务器有很大影响?
有什么好的解决方法?
有没有具体代码可参考?
谢谢大家!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2009-03-10 10:52 |只看该作者
先做,有影响再说。

论坛徽章:
0
3 [报告]
发表于 2009-03-10 11:07 |只看该作者
开个线程,或者进程搞吧

论坛徽章:
0
4 [报告]
发表于 2009-03-10 14:47 |只看该作者
影响大不大,还要看访问量如何。

论坛徽章:
0
5 [报告]
发表于 2009-03-12 11:23 |只看该作者
服务器收到客户端的消息后进行数据操作,可以这样写吗?
void CServer::OnRecv(CContext *pContext, CBuffer *pBuffer)
{
    ...
    ...
    Switch(recvOperateID)
    {
    case 0:
        EnterCriticalSection(&m_Lock);
        dataOperateID = 111;//数据操作ID(根据它判断数据操作的类型)
        m_hDataOp = CreateThread(...,DataOpThread,&dataOperateID...);//建创线程进行数据操作
        LeaveCriticalSection(&m_Lock);
   
        SendMsg(.....);//发消息给客户端
        break;

    case 1:
        EnterCriticalSection(&m_Lock);
        dataOperateID = 2222;
        m_hDataOp = CreateThread(...,DataOpThread,&dataOperateID...);
        LeaveCriticalSection(&m_Lock);
  

        SendMsg(.....);
        break;

    case 2:
        ....

    }
}


DWORD WINAPI CServer:ataOpThread(LPVOID lpParam)
{
    DataOprate *id = (DataOprate *)lpParam;

    if ( id->value = xxx )
    {
      sql = xxxx;
    }
    else if ( id->value = xxx )
    {
      sql = xxxx;
    }

    ....


}

论坛徽章:
0
6 [报告]
发表于 2009-03-12 22:42 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP