线程安全意味着什么?

Cha*_*nap 7 ruby thread-safety

我一直在阅读一些关于ruby中多线程编程的博客.我注意到的是作者倾向于使用thread-safety这个词.这是什么意思?为什么编写线程安全代码很重要?

Chr*_*ris 7

如果您有一个资源(例如,让我们说一个全局的书籍列表),并且您有两个运行的线程可以修改此列表.在很多情况下,列表的数据会变得不一致.

  • (线程A读取书籍并显示其数据)
  • (线程B在线程A使用数据时删除同一本书)
  • (线程A现在想要向本书添加一些信息)

因此,您必须使代码具有线程安全性,以便在任何时候只有一个线程可以对书籍列表具有写入权限.

死锁由SpyrosP提到发生在线程A块列表写入和线程B等待添加列表上的数据.因为两个线程都会等待彼此做某些他们无法做的事情.只有在未正确实现线程安全机制时才会发生这种情况.