这些是线程安全的吗?

Fla*_*ash 6 thread-safety concurrent-programming

我今天参加了面试,面试官问我以下问题:

重新入侵和互斥是线程安全的吗?你能解释一下原因吗?

我对并发编程比较陌生,无法回答它..但我说......

相互排斥是线程安全的.但重新入门不是,这就是为什么我们有可重入锁定的原因.

面试官转到下一个问题但是到了另一个地方......我想我搞砸了这个......

当他问我这个时,他期待我说什么?

Jig*_*shi 5

适当的答案应该是:

是的,他们是线程安全的实现.

重入

以这样的方式编写代码,使其可以由一个任务部分执行,由另一个任务重新输入,然后从原始任务恢复.这需要将状态信息保存在每个任务的本地变量中,通常在其堆栈中,而不是静态或全局变量中.

一个例子

相互排斥

使用确保只有一个线程可以随时读取或写入共享数据的机制来序列化对共享数据的访问.如果一段代码访问多个共享数据片段,则需要非常小心 - 问题包括竞争条件,死锁,活锁,饥饿以及许多操作系统教科书中列举的各种其他问题.

一个例子