线程中的同步是不是说程序开了多个线程例如UI开了一个线程,等待线程的值返回,但是现在操作UI,UI还是可以工作的?而UI开了一个线程使用阻塞那么现在UI就是无法进行操作了是不是?
UI和其他别的进程或者线程有什么区别?

解决方案 »

  1.   

    线程同步与否 跟 阻塞非阻塞没关系线程同步指两个(或多个)线程之间执行有指定顺序  一个做了什么之后  另一个才能做  一前一后 而不能随机阻塞一般指方法  说一个方法阻塞  本质上指 该方法不能马上返回  当前线程不能继续执行 仅此而已参考 http://www.cnblogs.com/xiaozhi_5638/archive/2012/12/01/2797545.html
      

  2.   

    同步和异步例如我在UI上有两个button(无限循环),按了其中一个,进入一个线程的时候。我还是可以按另一个线程的是不?
    而阻塞和不阻塞才是导致我能不能按的原因是不?
      

  3.   

    是的  方法中有类似无限循环这样的耗时操作   就说明它属于阻塞方法  阻塞方法会阻塞调用线程  所以线程以后的代码就不能执行
    thread1 :
    int a=0;
    a = 耗时操作(); //10秒钟返回
    Show(a); //不能马上执行以上thread1会因为耗时操作 而阻塞  如果你另开辟线程thread2去执行耗时操作  thread1就不会阻塞
    当两个线程需要使用统一资源时  可能会考虑有一个先后的顺序(比如只有a线程做完某事 线程b才能去做)  这时候就要用到线程同步  windows是抢占式操作系统  谁前谁后没有原则的(如果你不去处理同步 后果可想而知)严格来说 阻塞和非阻塞是强调方法(代码块)的  跟线程同步与否没有关系(只不过线程同步一般要用到阻塞这种方式去实现)
      

  4.   

    点击一个按钮后  导致不能点击第二个  的原因:
    1.你执行了耗时操作(阻塞方法);
    2.导致调用线程(UI线程)不能及时往下执行;
    3.调用线程(UI线程)不能及时处理Windows消息;
    4.界面卡死。以上跟线程同步没有关系
      

  5.   

    线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作
    这样的话我加不加阻塞都没有区别是吧
      

  6.   

    SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的 LRESULT值返回给调用者。
    这个是最常用的,如果对方在处理消息的时候我想要继续操作UI界面,是不是同步和异步都可以,但是阻塞了的话就不可以操作了
      

  7.   

    你要等B执行完  A才执行  A等待的过程可以说是线程阻塞
    不要说这个东西 这个是方法的同步调用和异步调用  同步调用就是指调用的方法是阻塞的(编写该方法的人决定的)  异步调用指这个方法是非阻塞的(编写该方法的人决定的)  你这话是从网上找的嘛?  我觉得这个不能跟“线程同步”的最初含义混淆
      

  8.   

    .net中一般同步方法会以sync开头  会阻塞调用线程   异步方法以async开头 不会阻塞调用线程
    自己静下心 多琢磨琢磨吧