底层20:多线程-GNUstep、队列组的使用、多线程的安全隐患

2020-09-08  本文已影响0人  张无奈

GNUstep:是GNU计划(就是开源很多项目的计划)的项目之一,它将Cocoa的OC库重新开源实现了一遍。

源码地址:http://www.gnustep.org/resources/download.php

虽然GNUstep不是苹果官方的源码,但还是具有一定的参考价值。

队列组的使用:

问题:异步并发执行任务1、任务2,等任务1、2完成以后,再回到主线程执行任务3

多线程的安全隐患

资源共享:1块资源可能会被多个线程共享,也就是说多个线程可能会访问同一块资源

比如多个线程访问同一个对象、同一个变量、同一个文件

当多个线程访问同一块资源,很容易引发数据错乱和数据安全问题。

示例1:存钱取钱

代码如下:

示例2:卖票

代码如下:

线程安全分析:

多线程安全隐患解决方案:

解决方案:使用线程同步技术(同步,就是协同步调,按预定的先后次序进行运行)

常见的线程同步技术:加锁


具体锁的使用查看:底层21:多线程-锁

上一篇下一篇

猜你喜欢

热点阅读