我经常遇到“线程安全”这一关键术语,并想知道它是什么意思。例如,在Firebase或Realm中,某些对象被认为是“线程安全”。线程安全的东西到底意味着什么?
发布于 2018-01-17 13:58:06
线程不安全-如果允许任何对象同时被多个线程修改。线程安全-如果任何对象不允许被多个线程同时修改。
一般来说,不可变对象是线程安全的。
发布于 2016-12-31 01:32:56
如果多个线程可以调用方法或访问对象的成员数据而没有任何问题,则称对象是线程安全的;广义上,“问题”被定义为仅从一个线程访问时偏离行为。
例如,包含正则整数i的代码i = i + 1的对象将不是线程安全的,因为两个线程可能会遇到该语句,一个线程可能读取i的原始值,递增它,然后写回那个递增的值;所有这些都与另一个线程同时发生。这样,i将只递增一次,而它本应递增两次。
发布于 2016-12-31 01:32:09
在搜索答案后,我从this网站上得到了以下内容:
线程安全代码可以安全地从多个线程或并发任务调用,而不会导致任何问题(数据损坏、崩溃等)。不是线程安全的代码一次只能在一个上下文中运行。线程安全代码的一个例子是let a= " thread - safe“。此数组是只读的,您可以同时从多个线程使用它,而不会出现问题。另一方面,用var a= "thread-unsafe“声明的数组是可变的,并且可以修改。这意味着它不是线程安全的,因为多个线程可以同时访问和修改该数组,从而导致不可预测的结果。变量和数据结构是可变的,并且本质上不是线程安全的,一次只能从一个线程访问。
https://stackoverflow.com/questions/41400185
复制相似问题