一个线程通过使用CSocket对象的指针来接收数据
之后,把该CSocket对象的句柄传给另一线程,另一线程通过该句柄来发送数据(发送数据的时候,另一个线程可能在接收数据)
我的问题是:
1。首先,这样做可不可以
2。如果可以的话,要不要同步,要注意哪些问题?

解决方案 »

  1.   

    我的意思是这样的
    线程模型:一个接收线程,一个处理线程(发送数据在此线程中)
    接收线程接收数据用的是CSocket对象的指针,处理线程发送数据用的CSocket对象
    的socket句柄(这个句柄是接收线程传过来的)。
    现在的问题是两个不同的线程,接收数据用指针,发送数据用句柄,发送和接收动作
    可能同时进行,我这样操作socket可不可以?
      

  2.   

    在线程间传递CSocket*是有问题的。
      

  3.   

    http://support.microsoft.com/default.aspx?scid=kb;en-us;175668
      

  4.   

    看是否破坏你的缓冲区(指你自己建的)啦,可能需要同步,这个你自己去判断吧。
    这种做法理论上说是可以的,但如果你的机器有两个cpu,可能会出现问题。
      

  5.   

    上次看到一帖子,说:
    两个线程对同一个Socket,分别进行收发,不加锁的话,没有问题。http://community.csdn.net/Expert/TopicView3.asp?id=4284765
      

  6.   

    同意fisker0303
    在多CPU下如果没有做好同步,很有可能出问题
      

  7.   

    用CSOCKET来进行多线程操作,
    肯定是个灾难,
    当初搞这个CSOCKET多线程,让我吃够了苦头,
    到现在我都不在使用MFC封装的SOCKET了。
      

  8.   

    用CSocket的话基本上没必要开线程去访问网络了,所有的读写都在主界面完成。
      

  9.   

    1. 你是一个线程使用CSocket 一个线程使用 socket句柄. 
     这是可以的.只是不要在2个线程间共享一个CSocket就行了  2. 发送 和 接收 可以同时进行. 但是不要 2个线程同时发送 或者同时接收, 这会产生不可知的结果.