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

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 一个线程 突然挂断 发出了加锁请求 为及时发出解锁请求(分布式锁在别的机器上)

  • 使用读写锁

原文发布于微信公众号 - 架构说(JiaGouS)

原文发表时间:2017-05-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏代码世界

Python中的logger和handler到底是个什么鬼

最近的任务经常涉及到日志的记录,特意去又学了一遍logging的记录方法。跟java一样,python的日志记录也是比较繁琐的一件事,在写一条记录之前,要写好多...

3349
来自专栏FreeBuf

Windows漏洞利用开发教程Part 5 :返回导向编程(ROP)

本文主要介绍的是Windows软件漏洞的利用开发教程。我花了大量的时间来研究了计算机安全领域Windows漏洞利用开发,希望能和大家分享一下,能帮助到对这方面感...

1643
来自专栏智能大石头

NewLife.Net——构建可靠的网络服务

老规矩,先上源码:https://github.com/nnhy/NewLife.Net.Tests

1250
来自专栏Golang语言社区

【Go 语言社区】Web 通信 之 长连接、长轮询(long polling)--转

基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。 一、什么是长连接...

1.1K3
来自专栏Java职业技术分享

分布式 | Dubbo 架构设计详解

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度...

2690
来自专栏数据之美

Zookeeper 原理与实践

1、Zookeeper 的由来 在Hadoop生态系统中,许多项目的Logo都采用了动物,比如 Hadoop 和 Hive 采用了大象的形象,HBase 采用了...

8378
来自专栏FreeBuf

浅谈php安全

这段时间一直在写一个整站,前几天才基本完成了,所以抽个时间写了一篇对于php安全的总结。 技术含量不高,过不了也没关系,希望能一些准备写网站的朋友一点引导。 在...

5448
来自专栏北京马哥教育

linux系统性能监控与优化(3)–memory

虚拟内存以页的方式管理,一般为4K,如果配置了大页,则为2M The Page Frame Reclaim Algorithm.(PFRA) ...

3817
来自专栏PHP技术大全

使用PHPCS+GIT钩子保障团队开发中代码风格一致性实践

笔者在6月份加入新团队,新团队这边刚组建起来,基础一些东西还处于待完善状态,比如笔者组内同学约定使用PSR-2的编码风格规范,但是并不是所有人都严格按照PSR-...

1722
来自专栏JackieZheng

RabbitMQ入门-消息派发那些事儿

在上篇《RabbitMQ-高效的Work模式》中,我们了解了Work模型,该模型包括一个生产者,一个消息队列和多个消费者。 我们已经通过实例看出消息队列中的消...

22510

扫码关注云+社区

领取腾讯云代金券