目标c:@synchronized 它是如何工作的

发布于 2024-12-10 19:26:10 字数 492 浏览 0 评论 0原文

可能的重复:
objective-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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

赏烟花じ飞满天 2024-12-17 19:26:10

只有@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 part A or part B, no other thread can enter part A or part B. Part C 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文