我刚开始学习线程安全。这让我的代码更加防御性,也许过于防御性了。
使用像Erlang这样的函数式语言会让我完全摆脱这种担忧吗?
发布于 2010-08-19 17:08:41
在Erlang中,执行状态的单位不是线程,而是进程。是的,它是在线程之上实现的一种轻量级的进程,但它更像一个进程而不是一个线程。
主要的一点是,进程不共享状态,它们传递消息;而线程默认共享所有内容,并且必须进行仲裁以避免混乱。
因此,您不需要线程安全,因为您没有使用线程。
发布于 2010-08-19 19:10:07
哈维尔是对的。
然而,我只想补充一些东西,因为它已经抓住了我。如果您正在使用内置驱动程序或nif,它可能不再是线程安全的。这似乎很明显,因为驱动程序或nif将使用C或C++代码,但值得一提的是。因此,您不能仅仅因为使用Erlang而完全忽略线程安全。
发布于 2010-08-20 07:47:17
不是的。见二郎风格的演员都是关于锁定的。在函数式语言中实现线程安全要容易得多,但您确实需要考虑它。
我刚开始学习线程安全。这让我的代码更加防御性,也许过于防御性了。
请注意,在这种情况下,很有可能你还是搞错了。共享-所有并发性都是,除了大多数琐碎的例子之外,很难在任何事情上得到正确的。
https://stackoverflow.com/questions/3524088
复制相似问题