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

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

作者: 张无奈 | 来源:发表于2020-09-08 11:00 被阅读0次

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

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

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

队列组的使用:

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

多线程的安全隐患

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

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

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

示例1:存钱取钱

代码如下:

示例2:卖票

代码如下:

线程安全分析:

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

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

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


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

相关文章

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

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

  • 多线程(三)

    上篇多线程(二)我们看了多线程的死锁和队列组的使用,下面我们再来看看多线程的安全隐患代码详见 gitHub_De...

  • 多线程02

    多线程2 GCD队列组: 基本使用: 常用函数 队列和组队列的区别 队列:封装任务,添加任务到队列 组队列:封装任...

  • python多线程的使用

    python多线程的使用 后续还会更新其他方法实现的多线程。 Queue实现多线程 通过队列实现多线程 启动一定数...

  • RocketMQ消息队列还没入门就想放弃

    题外话 什么情况下的异步操作需要使用消息队列而不是多线程? 消息队列和多线程两者并不冲突,多线程可以作为队列的生产...

  • 为什么发送邮件要使用消息队列而不是多线程

    什么情况下的异步操作使用消息队列而不是多线程?消息队列和多线程两者并不冲突,多线程可以作为队列的生产者和消费者。使...

  • iOS - Multi-Thread

    概念篇 进程 线程 多线程 单核多线程 & 多核多线程 并行 & 并发 同步 & 异步 队列 队列 & 任务 的执...

  • Thread

    队列 线程锁 多线程,线程池 队列 多线程爬虫示例 多线程 自定义线程 线程池

  • 队列和线程

    [iOS多线程中,队列和执行的排列组合结果分析] 多线程中的队列有:串行队列,并发队列,全局队列,主队列。 执行的...

  • 多线程(三) 队列组的使用

    在开发过程中,我们可能会遇到这样的情况,任务1和任务2可以同时进行,但是任务3和任务4只有等任务1和任务2都完成以...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/kwfvsktx.html