我有个问题想请教下,就是我创建个新线程A,然后在某种特殊的情况下,在线程A里又生成2个辅助线程 a1,a2,随着线程A的运行,假如在线程A里接受到不同的数据包,而要分别分配给辅助线程a1和a2处理,我想问的是怎么把这些不同的数据包信息分配到辅助线程中去,或者说辅助线程怎么能检测到线程A接受到了属于自己的数据包,请帅哥们看看撒,在线等...

解决方案 »

  1.   

    我想问的是怎么把这些不同的数据包信息分配到辅助线程中去,或者说辅助线程怎么能检测到线程A接受到了属于自己的数据包,请帅哥们看看撒,在线等...
    给BC线程各定义一个类链表变量,A分别将数据插入到链表,BC分别将数据从链表取出进行处理!
      

  2.   

    JasonHeung(拥有一切不过就这样笑着哭) 的说法是正确的,
    楼主你别着急,我也是刚学不久了,我刚做了个多线程的程序,也涉及你的问题,了;因为线程不是什么类对象,也不是什么变量,所以不能给它分配什么信息包内容的,但线程的启动必须指定一个入口函数,这样我们只要将这个函数定义在一个类里, 然后通过对象之间,就可以方便的进行通信了,换句话说,分配信息包的问题也解决了.
      

  3.   

    我先试试吧
    我的意思是,我在线程A里接受到不同IP的socket发来的消息,然后将不同IP的数据包放入不同的线程里处理,而那些线程怎么才知道线程A收到消息呢,是主动的循环访问某个标记?
      

  4.   

    ..使用数据队列..A线程为数据队列管理线程.负责向数据队列添加数据,a1,a2线程为数据处理线程,采用轮询方式访问数据队列.数据队列注意锁定问题.
      

  5.   

    TO :zhiang75
    有没有更简洁的方式,比如当线程A收到消息,接着就通知辅助线程a1处理呢??也就是不需要辅助线程a1线程去轮询访问方式呢?
    还有个就是数据队列注意锁定问题,这个是什么意思呢?还能给点参考
      

  6.   

    一般socket编程来说,很少把socket处理子线程进行固定。
    而是通过当前产生的socket对象去形成一个新的线程去处理。然后对总线程数进行控制罢了。
      

  7.   

    使用LocalDataStore,专门用来在线程之间传递数据。
      

  8.   

    TO :愚老大
    socket编程,我们通信一般会用TCP,面向连接的,所以用当前生成的socket 去形成个新的线程去处理,但是我现在用的是 UDP,面向无连接的,所以就一个socket  来接受消息,根据消息的不同,然后通知不同的线程去处理,怎么处理呢?
    我现在做个发送文件功能,象QQ那样,可以达到多个人向一个人发送文件,而这一个人是不是就得用多个线程来接受不同的文件,可是我用的是UDP,如果是TCP的话,就可以按照你那个意思去做了,接受到个新的 socket后,就产生个新的线程处理