UI和其他别的进程或者线程有什么区别?
14 个解决方案
#1
老张爱喝茶,废话不说,煮开水。
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
1 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
3 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。
所谓同步异步,只是对于水壶而言。
普通水壶,同步;响水壶,异步。
虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。
同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。
所谓阻塞非阻塞,仅仅对于老张而言。
立等的老张,阻塞;看电视的老张,非阻塞。
情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。
程序员写程序,很多情况下,老张和水壶都要涉及,即调用者与被调用者。四种组合模式各有所长。
这个例子和银行排队有异曲同工之妙,可是我觉得这个会比较容易理解一些。
老张一次比一次聪明,我承认跟老张很像。刚开始的情况逻辑比较简单,但效率低下。随着慢慢的提高,效率也提高了。所以个人认为,程序的效率和简单程度是成反比的。
但不是说异步非阻塞就一定是最好的,有的情况下更适合使用同步或者阻塞。
以上来自我都不知道什么时候都收藏的笔记
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
1 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
3 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。
所谓同步异步,只是对于水壶而言。
普通水壶,同步;响水壶,异步。
虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。
同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。
所谓阻塞非阻塞,仅仅对于老张而言。
立等的老张,阻塞;看电视的老张,非阻塞。
情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。
程序员写程序,很多情况下,老张和水壶都要涉及,即调用者与被调用者。四种组合模式各有所长。
这个例子和银行排队有异曲同工之妙,可是我觉得这个会比较容易理解一些。
老张一次比一次聪明,我承认跟老张很像。刚开始的情况逻辑比较简单,但效率低下。随着慢慢的提高,效率也提高了。所以个人认为,程序的效率和简单程度是成反比的。
但不是说异步非阻塞就一定是最好的,有的情况下更适合使用同步或者阻塞。
以上来自我都不知道什么时候都收藏的笔记
#2
线程同步与否 跟 阻塞非阻塞没关系
线程同步指两个(或多个)线程之间执行有指定顺序 一个做了什么之后 另一个才能做 一前一后 而不能随机
阻塞一般指方法 说一个方法阻塞 本质上指 该方法不能马上返回 当前线程不能继续执行 仅此而已
参考 http://www.cnblogs.com/xiaozhi_5638/archive/2012/12/01/2797545.html
线程同步指两个(或多个)线程之间执行有指定顺序 一个做了什么之后 另一个才能做 一前一后 而不能随机
阻塞一般指方法 说一个方法阻塞 本质上指 该方法不能马上返回 当前线程不能继续执行 仅此而已
参考 http://www.cnblogs.com/xiaozhi_5638/archive/2012/12/01/2797545.html
#3
同步和异步例如我在UI上有两个button(无限循环),按了其中一个,进入一个线程的时候。我还是可以按另一个线程的是不?
而阻塞和不阻塞才是导致我能不能按的原因是不?
而阻塞和不阻塞才是导致我能不能按的原因是不?
#4
异步阻塞和同步阻塞有区别吗?两个都是发生阻塞就要等阻塞结束才会有返回是不。
#5
我主要是看了一个人用异步阻塞,感觉产生的效果和同步阻塞没区别,感觉很奇怪,这块也不是很顺所以就迷茫了
#6
是的 方法中有类似无限循环这样的耗时操作 就说明它属于阻塞方法 阻塞方法会阻塞调用线程 所以线程以后的代码就不能执行
thread1 :
int a=0;
a = 耗时操作(); //10秒钟返回
Show(a); //不能马上执行
以上thread1会因为耗时操作 而阻塞 如果你另开辟线程thread2去执行耗时操作 thread1就不会阻塞
当两个线程需要使用统一资源时 可能会考虑有一个先后的顺序(比如只有a线程做完某事 线程b才能去做) 这时候就要用到线程同步 windows是抢占式操作系统 谁前谁后没有原则的(如果你不去处理同步 后果可想而知)
严格来说 阻塞和非阻塞是强调方法(代码块)的 跟线程同步与否没有关系(只不过线程同步一般要用到阻塞这种方式去实现)
#7
点击一个按钮后 导致不能点击第二个 的原因:
1.你执行了耗时操作(阻塞方法);
2.导致调用线程(UI线程)不能及时往下执行;
3.调用线程(UI线程)不能及时处理Windows消息;
4.界面卡死。
以上跟线程同步没有关系
#8
线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作
这样的话我加不加阻塞都没有区别是吧
这样的话我加不加阻塞都没有区别是吧
#9
SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的 LRESULT值返回给调用者。
这个是最常用的,如果对方在处理消息的时候我想要继续操作UI界面,是不是同步和异步都可以,但是阻塞了的话就不可以操作了
这个是最常用的,如果对方在处理消息的时候我想要继续操作UI界面,是不是同步和异步都可以,但是阻塞了的话就不可以操作了
#10
你要等B执行完 A才执行 A等待的过程可以说是线程阻塞
不要说这个东西 这个是方法的同步调用和异步调用 同步调用就是指调用的方法是阻塞的(编写该方法的人决定的) 异步调用指这个方法是非阻塞的(编写该方法的人决定的) 你这话是从网上找的嘛? 我觉得这个不能跟“线程同步”的最初含义混淆
#11
是网上找的,所以越看概念越混乱。这个同步异步调用应该都不会导致线程中途卡住是吧。
#12
.net中一般同步方法会以sync开头 会阻塞调用线程 异步方法以async开头 不会阻塞调用线程
自己静下心 多琢磨琢磨吧
#13
哦,就是自动调用了阻塞啊。。。。难怪概念混乱了。
#14
比喻的很形象,受教了
#1
老张爱喝茶,废话不说,煮开水。
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
1 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
3 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。
所谓同步异步,只是对于水壶而言。
普通水壶,同步;响水壶,异步。
虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。
同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。
所谓阻塞非阻塞,仅仅对于老张而言。
立等的老张,阻塞;看电视的老张,非阻塞。
情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。
程序员写程序,很多情况下,老张和水壶都要涉及,即调用者与被调用者。四种组合模式各有所长。
这个例子和银行排队有异曲同工之妙,可是我觉得这个会比较容易理解一些。
老张一次比一次聪明,我承认跟老张很像。刚开始的情况逻辑比较简单,但效率低下。随着慢慢的提高,效率也提高了。所以个人认为,程序的效率和简单程度是成反比的。
但不是说异步非阻塞就一定是最好的,有的情况下更适合使用同步或者阻塞。
以上来自我都不知道什么时候都收藏的笔记
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
1 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
3 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。
所谓同步异步,只是对于水壶而言。
普通水壶,同步;响水壶,异步。
虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。
同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。
所谓阻塞非阻塞,仅仅对于老张而言。
立等的老张,阻塞;看电视的老张,非阻塞。
情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。
程序员写程序,很多情况下,老张和水壶都要涉及,即调用者与被调用者。四种组合模式各有所长。
这个例子和银行排队有异曲同工之妙,可是我觉得这个会比较容易理解一些。
老张一次比一次聪明,我承认跟老张很像。刚开始的情况逻辑比较简单,但效率低下。随着慢慢的提高,效率也提高了。所以个人认为,程序的效率和简单程度是成反比的。
但不是说异步非阻塞就一定是最好的,有的情况下更适合使用同步或者阻塞。
以上来自我都不知道什么时候都收藏的笔记
#2
线程同步与否 跟 阻塞非阻塞没关系
线程同步指两个(或多个)线程之间执行有指定顺序 一个做了什么之后 另一个才能做 一前一后 而不能随机
阻塞一般指方法 说一个方法阻塞 本质上指 该方法不能马上返回 当前线程不能继续执行 仅此而已
参考 http://www.cnblogs.com/xiaozhi_5638/archive/2012/12/01/2797545.html
线程同步指两个(或多个)线程之间执行有指定顺序 一个做了什么之后 另一个才能做 一前一后 而不能随机
阻塞一般指方法 说一个方法阻塞 本质上指 该方法不能马上返回 当前线程不能继续执行 仅此而已
参考 http://www.cnblogs.com/xiaozhi_5638/archive/2012/12/01/2797545.html
#3
同步和异步例如我在UI上有两个button(无限循环),按了其中一个,进入一个线程的时候。我还是可以按另一个线程的是不?
而阻塞和不阻塞才是导致我能不能按的原因是不?
而阻塞和不阻塞才是导致我能不能按的原因是不?
#4
异步阻塞和同步阻塞有区别吗?两个都是发生阻塞就要等阻塞结束才会有返回是不。
#5
我主要是看了一个人用异步阻塞,感觉产生的效果和同步阻塞没区别,感觉很奇怪,这块也不是很顺所以就迷茫了
#6
是的 方法中有类似无限循环这样的耗时操作 就说明它属于阻塞方法 阻塞方法会阻塞调用线程 所以线程以后的代码就不能执行
thread1 :
int a=0;
a = 耗时操作(); //10秒钟返回
Show(a); //不能马上执行
以上thread1会因为耗时操作 而阻塞 如果你另开辟线程thread2去执行耗时操作 thread1就不会阻塞
当两个线程需要使用统一资源时 可能会考虑有一个先后的顺序(比如只有a线程做完某事 线程b才能去做) 这时候就要用到线程同步 windows是抢占式操作系统 谁前谁后没有原则的(如果你不去处理同步 后果可想而知)
严格来说 阻塞和非阻塞是强调方法(代码块)的 跟线程同步与否没有关系(只不过线程同步一般要用到阻塞这种方式去实现)
#7
点击一个按钮后 导致不能点击第二个 的原因:
1.你执行了耗时操作(阻塞方法);
2.导致调用线程(UI线程)不能及时往下执行;
3.调用线程(UI线程)不能及时处理Windows消息;
4.界面卡死。
以上跟线程同步没有关系
#8
线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作
这样的话我加不加阻塞都没有区别是吧
这样的话我加不加阻塞都没有区别是吧
#9
SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的 LRESULT值返回给调用者。
这个是最常用的,如果对方在处理消息的时候我想要继续操作UI界面,是不是同步和异步都可以,但是阻塞了的话就不可以操作了
这个是最常用的,如果对方在处理消息的时候我想要继续操作UI界面,是不是同步和异步都可以,但是阻塞了的话就不可以操作了
#10
你要等B执行完 A才执行 A等待的过程可以说是线程阻塞
不要说这个东西 这个是方法的同步调用和异步调用 同步调用就是指调用的方法是阻塞的(编写该方法的人决定的) 异步调用指这个方法是非阻塞的(编写该方法的人决定的) 你这话是从网上找的嘛? 我觉得这个不能跟“线程同步”的最初含义混淆
#11
是网上找的,所以越看概念越混乱。这个同步异步调用应该都不会导致线程中途卡住是吧。
#12
.net中一般同步方法会以sync开头 会阻塞调用线程 异步方法以async开头 不会阻塞调用线程
自己静下心 多琢磨琢磨吧
#13
哦,就是自动调用了阻塞啊。。。。难怪概念混乱了。
#14
比喻的很形象,受教了