4.1 通过售书场景讲解线程的锁和解锁 [iOS开发中的神兵利器
2018-04-11 本文已影响0人
互动教程网
1. 本节课将为您演示,线程的锁和解锁。使用锁可以防止多个线程,在访问同一个数据对象时,对数据造成的破坏。
2. 现在开始编写代码,实现一个图书销售程序,并通过该程序演示线程锁的使用。
7. 然后创建一个线程对象,并设置该线程的目标、选择器和数据对象等参数。
16. 添加一个判断语句,当仍然有图书尚未销售时,则执行后面的代码,否则结束并退出线程。
17. 添加一个休眠语句,放慢线程的执行动作,以方便观察线程锁的作用。
21. 然后在控制台输出线程的名称,已经售出的线程数量和剩余的图书数量。接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。
22. 观察控制台输出的图书销售信息,由于没有添加线程锁,致使有多个线程同时修改了图书销售数量的属性,从而产生图书剩余数量为-1的异常情况。
24. 接着在动作执行之前,添加一个线程锁,使该方法同时只被一个线程所访问。
25. 最后在方法的尾部,添加解锁语句,解除对访问的锁定,使其它线程可以获得调用方法的权利。接着再次启动模拟器预览项目,并观察控制台的日志输出。
26. 由于图书销售的方法被锁保护,使变量可以被安全地修改,此时在控制台输出的已售图书的数量,和剩余的图书数量都是正常的。
本文整理自:《app开发中的神兵利器》,真正的[手把手]教学模式,用最快的速度上手iOS开发,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1209739676,或扫描本页底部的二维码。课程配套素材下载地址:资料下载
apps8 2.png