【问题标题】:Difference between thread-safe and non-thread-safe in Objective-C [duplicate]Objective-C中线程安全和非线程安全之间的区别[重复]
【发布时间】:2016-06-10 07:22:44
【问题描述】:

我对@9​​87654323@ 和nonatomic 属性属性的thread safenon-thread-safe 概念感到困惑,其解释是:-

atomic 表示 thread safenonatomic 表示 non-thread-safenonatomic 提供高性能。

@property (nonatomic, weak) NSArray *myArray;

但是线程安全和非线程安全到底是什么意思呢?请用非常简单的方式解释!

【问题讨论】:

  • 那个页面中关于线程安全和非线程安全的解释在哪里?
  • 那两者有什么区别
  • 我不是在问原子或非原子。我在问:- 线程安全和非线程安全到底是什么意思以及它们的区别?请用非常简单的方式解释!
  • 冷静的人,明白了!
  • atomic 绝对不意味着“线程安全”。当您不确定事情的含义时(以尽量减少错误信息的传播),请小心做出这样的声明。 atomic 只是指围绕该属性的同步,它不会使您的程序“线程安全”。

标签: ios objective-c


【解决方案1】:

两者都是非线程安全的。

Atomic 只是一个读写保险箱。

在此处了解更多信息:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html

【讨论】:

    【解决方案2】:

    首先,我们应该知道什么是线程。所有的 iPhone 都使用多核处理器。通常,整个应用程序都在主线程中运行。 (即在单核中运行)。

    开发人员应该利用多核处理器并创建单独的线程以在不同的内核中同时运行不同的进程。因此,我们提高了应用程序的效率。

    假设,您正在使用具有 nonatomic 属性的字符串,并且您在应用程序中使用了两个线程。当两个线程同时尝试更改/访问字符串时,结果将是不可预测的。因为我们不知道哪个进程会在什么时候运行。

    所以,那个时候,我们必须用属性atomic设置字符串。这样一个进程/线程将一次处理该字符串。像这样,我们使它成为线程安全的。

    【讨论】:

    • 那么你的意思是说我们应该在多线程中使用非原子?
    • Michael, atomic 不保证线程安全。在某些非常狭窄的情况下,确实如此,但通常还不够。
    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2011-11-04
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多