objc_sync_enter

** 
 * Begin synchronizing on 'obj'.  
 * Allocates recursive pthread_mutex associated with 'obj' if needed.
 * 
 * @param obj The object to begin synchronizing on.
 * 
 * @return OBJC_SYNC_SUCCESS once lock is acquired.  
 */
@available(iOS 2.0, *)
public func objc_sync_enter(_ obj: Any) -> Int32

/** 
 * End synchronizing on 'obj'. 
 * 
 * @param obj The object to end synchronizing on.
 * 
 * @return OBJC_SYNC_SUCCESS or OBJC_SYNC_NOT_OWNING_THREAD_ERROR
 */
@available(iOS 2.0, *)
public func objc_sync_exit(_ obj: Any) -> Int32

objc_sync_enter 与 objc_sync_leave 一起使用, 是一个递归锁

使用例子:

objc_sync_enter(self)
//需要执行的代码块
objc_sync_exit(self)

与OC如下类似:

@synchronized(self) {
    //需要执行的代码块
}

你可能感兴趣的:(ios基础)