加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

线程安全代码究竟是怎么编写的

发布时间:2022-09-02 11:20:39 所属栏目:安全 来源:互联网
导读:相信有很多同学在面对多线程代码时都会望而生畏,认为多线程代码就像一头难以驯服的怪兽,你制服不了这头怪兽它就会反过来吞噬你。夸张了哈,总之,多线程程序有时就像一潭淤泥,走不进去退不出来。可这是为什么呢?为什么多线程代码如此难以正确编写呢? 从根
  相信有很多同学在面对多线程代码时都会望而生畏,认为多线程代码就像一头难以驯服的怪兽,你制服不了这头怪兽它就会反过来吞噬你。夸张了哈,总之,多线程程序有时就像一潭淤泥,走不进去退不出来。可这是为什么呢?为什么多线程代码如此难以正确编写呢?
 
  从根源上思考
 
  关于这个问题,本质上是有一个词语你没有透彻理解,这个词就是所谓的线程安全,thread safe。如果你不能理解线程安全,那么给你再多的方案也是无用武之地。接下来我们了解一下什么是线程安全,怎样才能做到线程安全。这些问题解答后,多线程这头大怪兽自然就会变成温顺的小猫咪。

  如果把你自己理解为线程的话,那么在你自己家里使用私有资源就是所谓的线程安全,原因很简单,因为你随便怎么折腾自己的东西(资源)都不会妨碍到别人;但到公共场所浪的话就不一样了,在公共场所使用的是公共资源,这时你就不能像在自己家里一样想怎么用就怎么用想什么时候用就什么时候用,公共场所必须有相应规则,这里的规则通常是排队,只有这样公共场所的秩序才不会被破坏,线程以某种不妨碍到其它线程的秩序使用共享资源就能实现线程安全。
 
  因此我们可以看到,这里有两种情况:
 
  线程私有资源,没有线程安全问题
  共享资源,线程间以某种秩序使用共享资源也能实现线程安全。
  本文都是围绕着上述两个核心点来讲解的,现在我们就可以正式的聊聊编程中的线程安全了。
 
  什么是线程安全
 
  我们说一段代码是线程安全的,当且仅当我们在多个线程中同时且多次调用的这段代码都能给出正确的结果,这样的代码我们才说是线程安全代码,Thread Safety,否则就不是线程安全代码,thread-unsafe.。非线程安全的代码其运行结果是由掷骰子决定的。

  对于这样段代码,无论你用多少线程同时调用、怎么调用、什么时候调用都会返回2,这段代码就是线程安全的。
 
  那么我们该怎样写出线程安全的代码呢?要回答这个问题,我们需要知道我们的代码什么时候呆在自己家里使用私有资源,什么时候去公共场所浪使用公共资源,也就是说你需要识别线程的私有资源和共享资源都有哪些,这是解决线程安全问题的核心所在。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读