`
luliangok
  • 浏览: 775958 次
文章分类
社区版块
存档分类
最新评论

可重入和线程安全

 
阅读更多

摘自:http://ustcchenjian.spaces.live.com/blog/cns!7d49e7b891677844!218.entry

可重入函数: Reentrant Function
线程安全函数: Thread-Safe Function

可重入和线程安全不是一个概念。
可重入 => 线程安全

可重入函数要解决的问题是,不在函数内部使用静态或全局数据,不返回静态或全局数据,也不调用不可重入函数。

线程安全函数要解决的问题是,多个线程调用函数时访问资源冲突。

函数如果使用静态变量,通过加锁后可以转成线程安全函数,但仍然有可能不是可重入的,比如strtok。

strtok不可重入的,也不是线程安全的。

加锁的strtok不可重入的,但线程安全。

而strtok_r既可重入的,也是线程安全的。


分享到:
评论

相关推荐

    可重入函数与线程安全函数

    可重入函数与线程安全函数,基本知识。可以看看。

    【Linux】— 线程安全 VS可重入

    线程安全 VS 可重入什么是线程安全和可重入常见的线程不安全的情况(重点)常见的线程安全的情况(重点)常见的可重入情况常见不可重入的情况可重入与线程安全联系可重入与线程安全区别(重点) 什么是线程安全和可重入 ...

    关于线程安全与可重入性.pdf

    关于线程安全与可重入性.pdf

    java多线程安全性基础介绍.pptx

    可重入锁 ReentrantReadWriteLock.ReadLock ReentrantReadWriteLock.WriteLock 隐式锁(内置锁) Synchronized 问题 死锁 性能 线程活跃与线程饥饿 同步工具类 原子操作类 AtomicInteger等 相当于加上...

    Java 多线程编程面试集锦20道问题解答Java多线程编程高难度面试题及解析

    此外,还探讨了线程间通信、线程优先级、守护线程、线程组、可重入锁、线程局部变量等关键概念和技术。 每个问题都附带了精确而深入的答案解析,涵盖了多线程编程的各个方面。您将了解线程安全的实现、死锁的避免...

    自己动手写一把可重入锁测试案例

    https://blog.csdn.net/zhang5476499/article/details/83794711 【Java并发编程:自己动手写一把可重入锁】中用到的例子。

    详解java多线程的同步控制

    同步控制是并发程序必不可少的重要手段,本文我们将通过重入锁、读写锁、信号量、倒计数器和循环栅栏以及他们的实例来介绍Java并发程序中的同步控制。 目录线程安全 Thread Safety重入锁 ReentrantLock读写锁 ...

    java面试第二部分:多线程与锁

    锁升级、虚拟机锁优化、锁的实现原理、线程安全、可重入锁、线程池的实现等常见的面试问题

    Java各种锁的使用方式及其对比

    Java提供了多种类型的锁,包括 `synchronized` 块,可重入锁,读写锁和印章锁等。这些锁可以用来控制对共享资源的访问,从而保证数据一致性和线程安全。 在程序中使用锁需要注意锁定的粒度和时长,过大的锁粒度或...

    Java并发编程原理与实战

    手动实现一个可重入锁.mp4 AbstractQueuedSynchronizer(AQS)详解.mp4 使用AQS重写自己的锁.mp4 重入锁原理与演示.mp4 读写锁认识与原理.mp4 细读ReentrantReadWriteLock源码.mp4 ReentrantReadWriteLock锁降级详解....

    基于VxWorks的文件系统的研究与实现 doc

    Tornado的TrueFFS是一种与VxWorks兼容的M-Systems Flite实现方式,可为种类繁多的Flash存储设备提供统一的块设备接口,并具有可重入、线程安全的特点,支持大多数流行的CPU架构。具有 TrueFFS的应用程序对Flash存储...

    Java并发编程(学习笔记).xmind

    委托是创建线程安全类的最有效策略,只需要让现有的线程安全类管理所有的状态 在现有线程安全类中添加功能 将同步策略文档化 基础构建模块 同步容器类 分类 Vector Hashtable 实现...

    hdf5-rust:HDF5防锈

    具有非线程安全性libhdf5的线程安全性是通过可重入互斥体来保证的。 大多数HDF5类型的本机表示形式,包括可变长度的字符串和数组。 派生宏,用于将用户结构和枚举自动映射到HDF5类型。 通过ndarray的多维数组...

    Java并发编程学习笔记

    2、可重入锁与 Synchronized 的其他特性 3、ThreadLocal 的底层实现与使用 4、ReentrantLock底层实现和如何使用 5、Condition源码分析 6、ReentrantReadWriteLock底层实现原理 7、并发工具类CountDownLatch 、...

    Java多线程与并发-原理

    文章目录synchronized线程安全主要诱因互斥锁特性获取对象锁同对象,异步同对象,同步代码块同对象,非静态同步方法同对象,同步代码块 对比 非静态同步方法不同对象,同步代码块 对比 非静态同步方法获取类锁和对象...

    Java并发编程实战

    2.3.2 重入 2.4 用锁来保护状态 2.5 活跃性与性能 第3章 对象的共享 3.1 可见性 3.1.1 失效数据 3.1.2 非原子的64位操作 3.1.3 加锁与可见性 3.1.4 Volatile变量 3.2 发布与逸出 3.3 线程封闭 3.3.1 Ad...

    Java 并发编程实战

    2.3.2 重入 2.4 用锁来保护状态 2.5 活跃性与性能 第3章 对象的共享 3.1 可见性 3.1.1 失效数据 3.1.2 非原子的64位操作 3.1.3 加锁与可见性 3.1.4 Volatile变量 3.2 发布与逸出 3.3 线程封闭 3.3.1 Ad-...

    Java面试题.docx

    46、谈谈对Synchronized关键字,类锁,方法锁,重入锁的理解 49、synchronized 和volatile 关键字的区别 51-58题 51、ReentrantLock 、synchronized和volatile比较 53、死锁的四个必要条件? 56、什么是线程池...

Global site tag (gtag.js) - Google Analytics