@ সিংক্রোনাইজড পারস্পরিক বর্জনীয়তা অর্জনের জন্য "লক" এবং "আনলক" ব্যবহার করে না? কীভাবে এটি তখন লক / আনলক করে?
নিম্নলিখিত প্রোগ্রামটির আউটপুট কেবলমাত্র "হ্যালো ওয়ার্ল্ড"।
@interface MyLock: NSLock<NSLocking>
@end
@implementation MyLock
- (id)init {
return [super init];
}
- (void)lock {
NSLog(@"before lock");
[super lock];
NSLog(@"after lock");
}
- (void)unlock {
NSLog(@"before unlock");
[super unlock];
NSLog(@"after unlock");
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
MyLock *lock = [[MyLock new] autorelease];
@synchronized(lock) {
NSLog(@"Hello World");
}
[pool drain];
}
lockবস্তুর প্রতি কলের উপর তৈরি করা হয়, তাই একটি মামলা হবে না যেখানে এক @synchronizedঅন্য খুঁজে ব্লক কেশ। এবং এর অর্থ কোনও পারস্পরিক বর্জন নেই)) অবশ্যই, উপরের উদাহরণটি অপারেশন করছে main, সুতরাং যাইহোক বাদ দেওয়ার মতো কিছুই নেই, তবে সেই কোডটি অন্য কোথাও অন্ধভাবে অনুলিপি করা উচিত নয়।