SOCKET sock;线程a,b 套接字sock(stream)线程a运行 调用send通过sock 发送数据1000byte 假设发了500byte 线程a挂起 开始执行线程b线程b也 调用send通过sock 发送数据1000byte用异步方式进行数据的发送 这样的话会有什么问题出现吗???
是否会 线程a将500byte数据发到系统缓冲区 线程b将他要发送的数据也发到系统缓冲区
并且就接在线程a的500byte之后呢??这样发送的数据就乱了
关于多线程对同一个套接字的调用 请高手指教!!!

解决方案 »

  1.   

    会有问题,如果你的socket是阻塞方式,应该就没问题,如果socket是异步,就会出现你担心的情况
      

  2.   

    应该会产生混乱的,线程没有自己的内存空间和IO设备,多个线程之间的这些资源是公用的,操作系统不负责协调。
    socket实际上和文件句柄是一种资源,想象一下,线程a向一个文件写1000个字符,然后线程b再向这个文件写500个字符,除非两个线程的运行有某种固定的规则,否则文件就不完整了。
      

  3.   

    你的问题应该是接受端会不会发生混乱
    如果接收端时连个socket的话,不同端口,当然就不会有问题
    如果仅是一个socket接受,当然就对来自于发送的的所有数据
    尽收!