为什么我们使用我们什么时候可以使用@synchronize 同时使用线程操作同步多线程操作&。如何同步目标C中的多个线程操作?
,这可能是一个愚蠢的问题,我需要了解线程的概念。请帮助理解。
在此先感谢。
为什么我们使用我们什么时候可以使用@synchronize 同时使用线程操作同步多线程操作&。如何同步目标C中的多个线程操作?
,这可能是一个愚蠢的问题,我需要了解线程的概念。请帮助理解。
在此先感谢。
为什么我们使用同步多线程操作
考虑@synchronize
为递归锁,你传递给它的参数(实例)。如果您想要锁定而没有采用NSLocking
或声明ivar,这很有用。
@synchronize
不是一个理想的解决方案速度的问题。 pthread_mutex
es快几倍,最后我测试了一遍。
...什么时候可以在使用线程操作时使用@synchronize。
它的功能就像一个递归互斥。因此,在程序流程中的任何时候都可以安全地引入它。为一个对象请求多个锁(通过@synchronize
)也是安全的;它是递归的,如果你从同一个线程两次获得对它的参数的锁定,它将不会发生死锁。
* 与递归互斥一样安全,但@synchronized
也会在发生异常时解锁。
如果你只需要知道为什么锁定在简单来说很重要:需要锁定,以防止多个读取或在同一时间写的对象和/或存储。无锁,读,同时可以吹走你的程序的完整性,因为不受保护的读取,读取时写在你的程序中执行任意一点(这将导致不确定的行为,无效的状态,部分更新,可能会出现多个线程编写的,不一致的状态,以及难以分离的崩溃的良好来源)。关于这个主题有一些非常大的解读,但是在较低的层次上锁定和线程化是你想要关注的(而不是专门针对@synchronize
的主题)。
阅读[线程编程指南(http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html)。你的问题非常广泛。 – omz