【发布时间】:2011-08-14 23:13:10
【问题描述】:
我似乎无法为 Objective C 找到任何读写锁。这是为 iphone dev 准备的。 有任何想法吗? this paper中的附录有部分代码,但不完整。
【问题讨论】:
标签: objective-c concurrency reentrancy readwritelock
我似乎无法为 Objective C 找到任何读写锁。这是为 iphone dev 准备的。 有任何想法吗? this paper中的附录有部分代码,但不完整。
【问题讨论】:
标签: objective-c concurrency reentrancy readwritelock
您可以使用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
});
【讨论】:
Foundation 提供 NSLock 来帮助你锁定和解锁线程,但我认为它可以帮助你。
【讨论】:
NSRecursiveLock 用于递归锁定。大多数用例使用递归锁更容易实现。 :)