【发布时间】:2017-02-11 07:51:03
【问题描述】:
是否从一个线程锁定一个函数,阻止所有其他线程尝试在不同函数中获取锁定。
我们可以使用 gcd 来访问下面提到的关键部分,只是想知道 @synchronized(self) 是如何工作的。 例如。
在 writeString() 中的 @synchronized(self){ } 中执行时,只有 writeString() 调用的多个线程会被阻塞吗?
或 当在 writeString() 中的 @synchronized(self){ } 中执行时,所有使用 @synchronized(self){} 调用同一类函数的线程(例如readDataFromFile())都会被阻塞?
-(void)writeString:(NSString*)string forObj:(id)obj
{
@synchronized(self)
{
[obj write:string];
}
}
-(void)readDataFromFile:(NSString*)file
{
@synchronized(self)
{
[self read];
}
}
【问题讨论】:
-
欢迎来到 Stackoverflow!您无需在问题正文中复制标题。
-
您需要出示您的代码。相同的
self还是不同的self? -
@shweta 是否属于同一类无关紧要。是同一个instance吗?
标签: objective-c multithreading synchronization locking self