我试图以原子方式执行以下一组语句
[inspectionLiteApi setBusinessObject:inspectionSourceObjectApi];
if (![inspectionSourceObjectApi.inspectionLites containsObject:inspectionLiteApi])
[inspectionSourceObjectApi addInspectionLitesObject:inspectionLiteApi];
可以从多个线程调用这些语句。但我希望每个线程以原子方式访问它们。什么是正确的方法。我搜索了NSLock
,但使用NSLock
有以下问题:
警告:NSLock类使用POSIX线程来实现其锁定 行为。在向NSLock对象发送解锁消息时,您必须这样做 确保该消息是从发送该消息的同一线程发送的 初始锁定消息。解锁来自不同线程的锁可以 导致未定义的行为。
关于
的使用 dispatch_semaphore_create
dispatch_semaphore_signal
和
dispatch_release
我无法理解如何使用它们。任何人都可以指导我吗?