• 线程的同步异步


     线程同步、异步的概念:
       1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程处理的数据,而B线程又修改了A线程处理的数据,显然这是由于全局资源造成的,有时为了解决此问题,优先考虑使用局部变量,退而求其次使用同步代码块,出于这样的安全考虑就必须牺牲系统处理性能,加在多线程并发时资源争夺最激烈的地方,这样就实现了线程的同步机制。
       同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求不到,怎么办,A线程只能等待下去。
       异步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为没有同步机制存在,A线程仍然请求的到,A线程无需等待,显然,同步最安全,最保险,而异步不安全,容易导致死锁,这样一个线程死掉就会导致整个线程崩溃,但没有同步机制的存在,性能会有所提升。
       两种异步
      严格的说,异步还是有两种
      一种是等,但是等的过程和同步不一样,等的时候可以做别的工作,但是成像的主线还是等待WaitforSingleObject(hEvent,INFINTE,TRUE);
      另一种是CALLBACK方式,这种异步是完全不等待,程序主线发出请求之后就干别的事情去了,完全不理会请求执行的如何。  所有异步必然涉及两个及以上的线程(不然不涉及异步的问题),
    第一种方式下,请求的后期工作是在发出请求的线程上执行,
    第二种方式下,后期工作可以在任何线程(通常是执行请求的线程上)完成。

      同步异步举例辨析
       举个例子:普通B/S模式(同步)AJAX技术(异步)
      同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能做任何事情。 异步: 请求通过事件触发->服务器处理(这时的浏览器仍然可以做其他事情)->处理完毕.
      同步 就是你叫我去吃饭,我听到了就和你去吃饭,如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
      异步  就是你叫我,然后你自己去吃饭,我得到消息后可能立刻走,也可能等到下班才去吃。
      所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以更省钱~/~!
      再举个例子
      简单的说打电话时同步  发信息时是异步。

    既然选择了远方,便只顾风雨兼程
  • 相关阅读:
    xtrabackup执行备份要拥有的权限
    CentOS 7 下yum安装xtrabackup备份工具
    MySQL read_only选项的作用
    Linux进程管理命令
    MySQL二进制日志中保存的上下文信息
    MySQLdb的安装
    MySQL The password hash doesn't have the expected format.
    web框架本质
    进程和线程
    good blog
  • 原文地址:https://www.cnblogs.com/zhousen34/p/4732514.html
Copyright © 2020-2023  润新知