首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS中,线程安全意味着什么?

在iOS中,线程安全意味着什么?
EN

Stack Overflow用户
提问于 2016-12-31 01:27:36
回答 4查看 3.7K关注 0票数 12

我经常遇到“线程安全”这一关键术语,并想知道它是什么意思。例如,在Firebase或Realm中,某些对象被认为是“线程安全”。线程安全的东西到底意味着什么?

EN

回答 4

Stack Overflow用户

发布于 2018-01-17 13:58:06

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

一般来说,不可变对象是线程安全的。

票数 11
EN

Stack Overflow用户

发布于 2016-12-31 01:32:56

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

例如,包含正则整数i的代码i = i + 1的对象将不是线程安全的,因为两个线程可能会遇到该语句,一个线程可能读取i的原始值,递增它,然后写回那个递增的值;所有这些都与另一个线程同时发生。这样,i将只递增一次,而它本应递增两次。

票数 8
EN

Stack Overflow用户

发布于 2016-12-31 01:32:09

在搜索答案后,我从this网站上得到了以下内容:

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41400185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档