目标c:@synchronized 它是如何工作的
当我有三种方法:
-(void) a {
@synchronized(self) {
//part a
}
}
-(void) b {
@synchronized(self) {
//part b
}
-(void) c {
// part c
}
并且线程位于 a 部分,那么 c 部分是否会被其他线程阻塞?
Possible Duplicate:
objective-c : @synchronized, how does it work?
when i have three methods:
-(void) a {
@synchronized(self) {
//part a
}
}
-(void) b {
@synchronized(self) {
//part b
}
-(void) c {
// part c
}
and thread is in part a , then will be part c blocked for other threads?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只有
@synchronized
块相互交互。只要一个线程正在执行A
部分或B
部分,其他线程就不能进入A
部分或B
部分代码>.C
部分不受此影响。您上面的新评论更加清楚了您实际要问的内容。
在
@synchronized(self)
中,self
并不是锁定自身的东西,它被用作作为锁以保证一次只有一个线程可以进入@synchronized块。正如官方文档所解释的:您可以使用任何对象作为信号量。
同步章节有一个顺便说一句,所有可用锁定选项的综合描述。
Only
@synchronized
blocks interact with each other. As long as one thread is executing either partA
or partB
, no other thread can enter partA
or partB
. PartC
is not affected by this in any way.Your new comment above made a bit clearer, what you are actually asking.
In
@synchronized(self)
,self
is not the thing that is locked itself, it is used as a lock to guarantee that only one thread at a time can enter the@synchronized
block.As the official documentation explains: you can use any object as a semaphore.
The chapter on synchronization has a comprehensive description of all available locking options, btw.