아토믹을 사용하면 틀림없이 라인이 안전합니까?
그 다음에 아토믹은 set 방법에 자물쇠를 넣어 여러 라인이 이property를 계속 쓰는 것을 방지하여 예측하기 어려운 수치를 만들었다.이것도 읽기와 쓰기의 잠금일 뿐이다.라인이 안전한 것과는 사실 좀 다르다.아래 봐.
@interface MONPerson : NSObject
@property (copy) NSString * firstName;
@property (copy) NSString * lastName;
- (NSString *)fullName;
@end
Thread A:
p.firstName = @"Rob";
Thread B:
p.firstName = @"Robert";
Thread A:
label.string = p.firstName; // << uh, oh -- will be Robert
그러나 C도 쓰고 D가 읽으면 D는 무작위 값(ABC가 수정한 값)을 읽는다. 이것은 라인이 안전한 것이 아니다.가장 좋은 방법은lock을 사용하는 것이다.
Thread A:
[p lock]; // << wait for it… … … …
// Thread B now cannot access
pp.firstName = @"Rob";
NSString fullName = p.fullName;
[p unlock];
// Thread B can now access plabel.string = fullName;
Thread B:
[p lock]; // << wait for it… … … …
// Thread A now cannot access p…
[p unlock];
아토믹의 가장 큰 문제는 느린 것이다. 노토믹보다 20배 느리다.물론 마지막으로 이런 수치 변화는 서버가 할 수 있도록 권장합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.