如果,我有3颗树,我如何能用多线程同时访问3颗树。

解决方案 »

  1.   

    问题是,CPU是抢占式的,如果一个线程休眠了,再次启动的时候,会有问题吗?
      

  2.   

    TO:如果一个线程休眠了,再次启动的时候,会有问题吗你所谓的休眠是什么意思?Sleep?如果Sleep()时间到了,会自己唤醒的..不用再次启动..
      

  3.   

    void visitor1()
    {
        //访问树
    }
    void visitor2()
    {
        //访问树
    }
    void visitor3()
    {
        //访问树
    }
    void startVisit()
    {
      MethodInvoker mi1 = new MethodInvoker(visitor1);
      MethodInvoker mi2 = new MethodInvoker(visitor2);
      MethodInvoker mi3 = new MethodInvoker(visitor3);
      mi1.BeginInvoke(null,null);
      mi2.BeginInvoke(null,null);
      mi3.BeginInvoke(null,null);
    }3个visitor函数就在3个线程里访问树了,注意:要是这颗树的数据会变化的话要lock
      

  4.   

    访问3颗树?

    那就这样
    void visitor1()
    {
        //访问树1
    }
    void visitor2()
    {
        //访问树2
    }
    void visitor3()
    {
        //访问树3
    }
    void startVisit()
    {
      MethodInvoker mi1 = new MethodInvoker(visitor1);
      MethodInvoker mi2 = new MethodInvoker(visitor2);
      MethodInvoker mi3 = new MethodInvoker(visitor3);  //异步委托方式
      mi1.BeginInvoke(null,null);
      mi2.BeginInvoke(null,null);
      mi3.BeginInvoke(null,null);
    }