【问题标题】:need read-write lock in objective c or c在目标 c 或 c 中需要读写锁
【发布时间】:2011-08-14 23:13:10
【问题描述】:

我似乎无法为 Objective C 找到任何读写锁。这是为 iphone dev 准备的。 有任何想法吗? this paper中的附录有部分代码,但不完整。

【问题讨论】:

    标签: objective-c concurrency reentrancy readwritelock


    【解决方案1】:

    您可以使用dispatch_barrier_async函数和并发队列来实现读写锁。

        dispatch_queue_t queue = dispatch_queue_create("your queue name", DISPATCH_QUEUE_CONCURRENT);
        dispatch_async(queue, ^{
            // execute read task 1
        });
        dispatch_async(queue, ^{
            // execute read task 2
        });
        dispatch_barrier_async(queue, ^{
            // execute write task 1
        });
    

    【讨论】:

      【解决方案2】:

      Foundation 提供 NSLock 来帮助你锁定和解锁线程,但我认为它可以帮助你。

      【讨论】:

      • NSRecursiveLock 用于递归锁定。大多数用例使用递归锁更容易实现。 :)
      • 谢谢,但我需要一个 readers-writer 锁,而不仅仅是任何旧锁
      • 我在网上搜索,我认为你只能使用 pthread_rwlock_t 及其相关命令
      猜你喜欢
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2016-06-05
      • 1970-01-01
      相关资源
      最近更新 更多