我用CAsyncSocket做局域网内数据传输的阿项目,目前有个疑问:就是如果服务器接收10个下位机的Socket建立连接,而我在连接Socket中又调用主线程的变量,那这样会不会有冲突呢,会出现两个或几个连接Socket线程同时访问主线程的变量吗?如果这样怎么办?

解决方案 »

  1.   

    CAsyncSocket是"异步socket",并不内在支持多线程。因此,除非你显示的引入了多线程,不会存在线程冲突问题
      

  2.   

    帮你UP吧,我也正准备做多线程的SOCKET,希望能收集到些有用的资料
      

  3.   

    如果使用阻塞方式接收数据recv,则需要使用多线程,对于公共变量则需要使用锁
      

  4.   

    难道就不会存在几个下位机同时与服务器的接收SOCK通信的情况?
    我感觉服务器同时有10个SOCK在工作,肯定是多线程的,不可能在排队吧
    郁闷,没见过这方面的说明,到底几个SOCK怎么工作啊
      

  5.   

    我也是新生,我的建议是:创建一个CListenSocket, 声明一个
    CAyncSocket *[] , 每当有新连接,创建一个实例。每个
    CAyncSocket 实例会自动调用OnReceive() 当有数据在socket里。
      

  6.   

    to hungta() 
    >难道就不会存在几个下位机同时与服务器的接收SOCK通信的情况?
      会!
    >我感觉服务器同时有10个SOCK在工作,肯定是多线程的,不可能在排队吧
      那是你的感觉!绝对不是多线程!事实上他们就是在排队。信不信由你