前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是线程安全(初步整理)

什么是线程安全(初步整理)

作者头像
程序员小王
发布2018-04-13 10:22:01
8040
发布2018-04-13 10:22:01
举报
文章被收录于专栏:架构说架构说

Q 一个线程如果只有互斥锁那么那么这个线程一定是安全的吗?

一、线程安全 (thread-safe)

二、什么行为破坏线程安全

  • signal 中断

signal handler可能在任何时候打断一个进程的任意一个线程而执行(如果该线程没有屏蔽该signal的话)

如果该函数是不是可 重入的 可能出现意想不到的问题

  • 在多线程执行fork函数

存在问题:

1 fork时候 其他线程可能fork失败

在Linux中,fork的时候只复制当前线程到子进程,在fork(2)-Linux Man Page中有着这样一段相关的描述:

>The child process is created with a single thread--the one that called fork(). The entire virtual address space of the parent is replicated in the child, including the states of mutexes, condition variables, and other pthreads objects; the use of pthread_atfork(3) may be helpful for dealing with problems that this can cause.

也就是说除了调用fork的线程外,其他线程在子进程中“蒸发”了

  • 线程非正常死亡破坏线程安全

一个线程 突然挂断 线程占有的锁如何释放? RAII 一个线程 突然挂断 发出了加锁请求 为及时发出解锁请求(分布式锁在别的机器上)

  • 使用读写锁
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Offer多多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、线程安全 (thread-safe)
  • 二、什么行为破坏线程安全
    • 1 fork时候 其他线程可能fork失败
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档