假设有一个名为-aString
的字符串@property (atomic, retain) NSString *aString;
所以现在假设线程A正在使用aString,那时线程B正在尝试访问aString。我知道因为aString属性是原子的,所以线程B将无法访问它,但我的问题是线程B的访问请求是否被取消,或者它的请求将在线程A完成执行后执行。
谢谢你的回复。
答案 0 :(得分:1)
线程B将等待直到线程A完成以读取属性内容。
当你访问属性时,没有其他任何调用属性的getter方法的东西,如果是atomic则意味着getter方法访问受到互斥锁的保护,所以直到getter方法都没有返回所有其他尝试的线程访问该物业正在等待。
如果你owerwrite属性的getter / setter你负责将线程同步实现到方法体中,否则属性将不再是原子的