在iOS中线程安全是什么意思?

Ali*_*Mir 7 thread-safety ios swift

我经常碰到“线程安全”这两个关键术语,想知道这意味着什么。例如,在Firebase或Realm中,某些对象被视为“线程安全”。线程安全的东西到底意味着什么?

小智 10

线程不安全 - 如果允许多个线程同时修改任何对象。 线程安全 - 如果不允许多个线程同时修改任何对象。

通常,不可变对象是线程安全的。


Bat*_*eba 6

如果一个以上的线程可以调用方法或访问该对象的成员数据而没有任何问题,则认为该对象是线程安全的。“问题”被广泛定义为仅从一个线程访问时偏离行为。

例如,包含i = i + 1正整数的代码的对象i不是线程安全的,因为两个线程可能遇到该语句,而一个线程可能读取的原始值i,将其递增,然后写回该递增的值;全部与另一个线程同时进行。这样,i将只增加一次,应该将其增加两次。


Ali*_*Mir 5

搜索答案后,我从这个网站得到以下信息:

可以从多个线程或并发任务安全地调用线程安全代码,而不会导致任何问题(数据损坏、崩溃等)。非线程安全的代码一次只能在一个上下文中运行。线程安全代码的一个例子是 let a = ["thread-safe"]。此数组是只读的,您可以同时从多个线程使用它而不会出现问题。另一方面,用 var a = ["thread-unsafe"] 声明的数组是可变的,可以修改。这意味着它不是线程安全的,因为多个线程可以同时访问和修改数组,结果不可预测。可变且本质上不是线程安全的变量和数据结构一次只能从一个线程访问。


归档时间:

查看次数:

1766 次

最近记录:

7 年,7 月 前