Navigation

    西南IT社区
    • Register
    • Login
    • Search
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目

    什么是线程安全

    极客生涯
    什么是线程安全
    1
    1
    23
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 水灵
      水灵 last edited by admin

      我们先来了解一下什么叫线程,线程就是指CPU的调度为最小单元,简单来说线程就是将代码按顺序执行下来,执行完毕就会马上结束的一条线。必须要悉知的一点是:“线程安全”指的并不是线程的安全,而是指内存的安全。这么说的原因则是和操作系统息息相关。

      92653d2a-15c7-4740-ab7f-f75a97fb18a4-image.png

      当前的主流操作系统都是多任务的,即多个进程能够同时运行。不过,为了能够保证安全,每个进程都只能去访问分配给自己的内存空间,而不能访问别的进程的,这是由操作系统保障的。

      实际上在所有进程的内存空间中都会有一块特殊的公共区域,通常称为堆,也成为内存。并且进程内的所有线程都可以访问到该区域,这就是造成问题的潜在原因。

      所以所谓的线程安全其实究其根本指的就是,在堆/内存中保存的数据由于能够被任何线程访问到,所以在没有限制的情况下存在被意外修改的风险。换句话说就是堆内存空间在没有保护机制的情况下,对多线程来说是十分不安全的地方,因为你放进去的数据,很有可能被别的线程给“破坏”掉。

      1422d122-1e0f-4460-9155-e1a396f27bb5-image.png

      其实在程序中也是这样的,所以操作系统会为所有的线程分配属于它自己的内存空间,这个属于自己的内存空间被称为栈内存,是其它线程无权访问的一个空间。这个空间也是由操作系统保障的。

      如果有一些数据只有某个线程能够使用,其它线程不能操作也不需要操作,那么这些数据就可以放入线程的栈内存中。较为常见的例子就是局部变量。

      局部变量之所以比较安全,是因为它的定义的“位置”是在方法里。虽然这样做可以达到十分的安全,但是它的使用范围也有了限制,但是安全始终是第一位的啦。

      1 Reply Last reply Reply Quote 0
      • First post
        Last post
      使用HTML构建办公软件 使用HTML构建办公软件 使用HTML构建办公软件
      光
      A
      庆
      小
      U
      Y
      L
      I
      Z
      I
      Y
      C
      Z
      E
      Y
      U
      I
      A
      Z
      Y
      Y
      罗
      R
      大

      西南地区IT社群(QQ)
      云南
      【昆明网页设计交流吧】243627302
      【昆明nodejs交流吧】 243626749
      【VUE】838405306
      【云南程序员总群】343606807
      【昆明UI设计】104031254
      【云南软件外包】15547313
      贵州
      【PHP/java源码/站长交流群】55692114
      四川
      【成都Java/JavaWeb交流】86669225
      【vaScript+PHP+MySql】116270060
      【UI设计/设计交流学习群】135794928
      重庆
      【诺基亚 JAVA游戏博物馆】 559479780
      【PHP,Java,Python,C++接单】 442103442
      西藏
      社群
      昆明网页设计交流吧
      友情链接
      • Funtask
      • Funtask 社区
      • SUWIS
      ©2019-2021 滇ICP备20006698号