在Windows平台下, 对线程的同步控制,可以有Critical Section,Mutex,Semaphore,Event 等方式.
在IOS平台,使用GCD进行简单的多线程编程时,可以使用dispatch_semaphore_t进行相应的同步操作.
IOS平台上没有对应的Event这个控制对像. 对于一些适合Event模式的情况下,可以通过dispatch_semaphore_t模拟event(autoReset)的特性.
set:
class="brush:objc;gutter:false;">-(void)set { dispatch_semaphore_wait(_semaphore, DISPATCH_TIME_NOW); dispatch_semaphore_signal(_semaphore); }
reset:
-(void)reset { dispatch_semaphore_wait(_semaphore, DISPATCH_TIME_NOW); }
wait:
-(BOOL)wait:(dispatch_time_t)t { return dispatch_semaphore_wait(_semaphore, t); }
以上模拟的是非安全的autoReset模式的Event. 在要求不高的情况下能简单使用.