使用dispatch_semaphore_t实现event的基本功能_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 使用dispatch_semaphore_t实现event的基本功能

使用dispatch_semaphore_t实现event的基本功能

 2013/8/18 19:28:54  tzjut  博客园  我要评论(0)
  • 摘要:在Windows平台下,对线程的同步控制,可以有CriticalSection,Mutex,Semaphore,Event等方式.在IOS平台,使用GCD进行简单的多线程编程时,可以使用dispatch_semaphore_t进行相应的同步操作.IOS平台上没有对应的Event这个控制对像.对于一些适合Event模式的情况下,可以通过dispatch_semaphore_t模拟event(autoReset)的特性.set:-(void)set{dispatch_semaphore_wait
  • 标签:功能 实现 使用 Map SEM

在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. 在要求不高的情况下能简单使用.

 

 

 

发表评论
用户名: 匿名