当前位置: 首页 > news >正文

怎么建设淘宝联盟的网站做vip视频网站侵权

怎么建设淘宝联盟的网站,做vip视频网站侵权,看网红直播做爰的网站,网站 提示建设中文章目录概念无锁加锁死锁解决死锁概念 threading.Lock 同步锁#xff0c;可以用于保证多个线程对共享数据的独占访问。 当一个线程获取了锁之后#xff0c;其他线程在此期间将不能再次获取该锁#xff0c;直到该线程释放锁。这样就可以保证共享数据的独占访问#xff0c… 文章目录概念无锁加锁死锁解决死锁概念 threading.Lock 同步锁可以用于保证多个线程对共享数据的独占访问。 当一个线程获取了锁之后其他线程在此期间将不能再次获取该锁直到该线程释放锁。这样就可以保证共享数据的独占访问从而避免数据不一致的问题但是错误的使用Lock也会发生死锁等待的情况 无锁 当使用多线程访问并修改公共资源时若不加锁则会导致数据与预期结果不同 import threading# 创建一个Lock对象 lock threading.Lock()# 共享资源 counter 0# 线程函数 def worker():global counter# 获取锁# 对共享资源进行操作for i in range(1000000):counter 1print(Counter value: , counter)# 创建两个线程并启动它们 t1 threading.Thread(targetworker) t2 threading.Thread(targetworker) t1.start() t2.start() t1.join() t2.join()######################## 结果 ############################ Counter value: 1264715 Counter value: 1326630Process finished with exit code 0 ############################################################究其原因我们可以假设 当线程t1拿到counter100时还没来得及1此时线程t2也拿到了counter100。现在当t1和t2对counter进行加1后counter值都变成了101并返回给全局变量。我们发现两个线程在同时使用和修改同一全局变量counter时总数少加了一个1。因为一个线程在对公共资源做读写的时候其它线程也能对它进行读写两个线程拿到了一样的值这就导致了最后产生的结果数据不一致。 为了防止这个问题我们对公共资源进行使用时一定要进行加锁保护 加锁 import threading# 创建一个Lock对象 lock threading.Lock()# 共享资源 counter 0# 线程函数 def worker():global counter# 获取锁lock.acquire()try:# 对共享资源进行操作for i in range(1000000):counter 1print(Counter value: , counter)finally:# 释放锁lock.release()# 创建两个线程并启动它们 t1 threading.Thread(targetworker) t2 threading.Thread(targetworker) t1.start() t2.start() t1.join() t2.join()######################## 结果 ############################# Counter value: 1000000 Counter value: 2000000Process finished with exit code 0 ############################################################因为加了锁两个线程成功地对计数器分别进行了递增操作。 究其原因我们可以假设 当线程t1先获取到了锁lock并对数据处理部分进行了加锁假设t1拿到counter1此时线程t2也想拿counter但是因为获取不到锁lock就只能等待lock被释放。当线程t1完全执行完递增操作后将锁lock给释放掉了此时t2突然发现它能获取到锁lock了于是就对t2的数据处理部分进行了加锁然后执行数据递增逻辑。直到t2的完全执行完递增操作后将锁lock释放我们发现两个线程由于锁的作用只能顺序性的获取需要的公共资源counter保证了线程流程执行中公共资源使用的独占性。 因为加锁而且没有出现竞态所以结果是准确且符合预期 但同时在多线程中错误的加锁顺序可能会导致锁等待也就是俗称的“死锁现象。 死锁 死锁指的是在多线程或分布式系统中两个或多个线程或进程因互相等待对方释放资源而陷入无限等待的状态无法继续执行的情况。 当多个线程或进程互相竞争同一组资源时如果每个线程都持有一些资源并且都在等待另一个线程释放它所需要的资源时就会发生死锁。这种情况下所有的线程都被阻塞无法继续执行从而导致系统出现僵死状态。 import threading# 创建两个Lock对象 lock1 threading.Lock() lock2 threading.Lock()# 线程函数1 def worker1():lock1.acquire()print(Worker 1 acquired lock 1)lock2.acquire()print(Worker 1 acquired lock 2)lock2.release()print(Worker 1 released lock 2)lock1.release()print(Worker 1 released lock 1)# 线程函数2 def worker2():lock2.acquire()print(Worker 2 acquired lock 2)lock1.acquire()print(Worker 2 acquired lock 1)lock1.release()print(Worker 2 released lock 1)lock2.release()print(Worker 2 released lock 2)# 创建两个线程并启动它们 t1 threading.Thread(targetworker1) t2 threading.Thread(targetworker2) t1.start() t2.start() t1.join() t2.join()######################## 结果 ############################ Worker 1 acquired lock 1 Worker 2 acquired lock 2 ...无尽的等待 ############################################################在上面的代码中我们创建了两个Lock对象并在两个线程中使用了不同的顺序来获取这两个锁。 线程1首先获取了lock1然后尝试获取lock2而线程2则首先获取了lock2然后尝试获取lock1。 由于两个线程获取锁的顺序不同它们【可能】会在某个时刻同时持有一个锁但尝试获取另一个锁时会被阻塞。 例如当线程1获取了lock1而线程2获取了lock2时它们都会等待另一个锁的释放从而导致死锁。 这时候程序将不再继续执行而是一直处于等待状态。 这里如果想要要避免死锁就需要确保不同线程获取锁的顺序是一致的。 也就是说如果一个线程首先获取了lock1那么它在尝试获取lock2时也应该按照相同的顺序来获取而不是反过来。 解决死锁 死锁的产生原因通常是由于多个线程对共享资源的竞争同时又没有良好的资源分配策略或锁的获取顺序导致的。在设计多线程或分布式系统时避免死锁是一个重要的问题。常用的避免死锁的方法包括 加锁顺序的规范化资源分配策略的优化使用超时等待等机制。
http://www.hkea.cn/news/14334357/

相关文章:

  • 建德网站seo邢台网站建设要多少钱
  • 一键网站提交网站备案查询站长工具
  • 怎么开发销售网站专业网站推广公司
  • 非常好的资讯网站设计wordpress 电影解析
  • 怎样做免费网站卖东西美容产品网站建设多少钱
  • 那些网站专门做棋牌推广的企业网站打不开的原因
  • 昆明网页重做南昌网站排名优化报
  • 长沙网站优化方案机票网站开发知乎
  • jsp商业网站开发网站系统排名
  • 三门县住房和城乡建设规划局网站陕西网站关键词自然排名优化
  • 2021网站建设前景怎么样网站后台编辑器不能正常显示
  • 公司网站 开源钓鱼网站链接
  • 网站设立前置审批ppt模板下载后怎么导入
  • 图片做视频在线观看网站贵阳网站建设在线
  • 专业的模板建站企业杭州百度快照
  • 给公司做网站怎么样重庆公司注销的流程及需提供的材料
  • 网站建设宗旨是指最新闻头条新闻
  • 建网站如何备案建设小型网站
  • 做一网站要学些什么软件郑州网页开发的公司
  • 互联网公司注册百度搜索优化费用
  • 金融课程网站模板下载和平区网站建设
  • 搭建外文网站济南小程序开发多少钱
  • 基于网站的网络营销方法有哪些有没有咨询求助做任务的网站
  • 教如何做帐哪个网站好项目营销推广策划
  • 网页设计如何建立网站网店代理免费一件代发
  • 服装加工厂网站建设方案计划书常用网站开发工具
  • 成都网站开发企业自己做小卡用什么软件
  • 京东网站建设流程图对网站开发课程的建议
  • 全球最大的平面设计网站html5快速建站
  • 外贸网站建设注意事项和建议浙江联科网站开发