使用dispatch_semaphore_t实现event的基本功能
2024-08-24 22:49:31
在Windows平台下, 对线程的同步控制,可以有Critical Section,Mutex,Semaphore,Event 等方式.
在IOS平台,使用GCD进行简单的多线程编程时,可以使用dispatch_semaphore_t进行相应的同步操作.
IOS平台上没有对应的Event这个控制对像. 对于一些适合Event模式的情况下,可以通过dispatch_semaphore_t模拟event(autoReset)的特性.
set:
-(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. 在要求不高的情况下能简单使用.
最新文章
- 【C#】【Thread】Barrier任务并行
- php中几个字符串替换函数详解
- 小知识:Python函数传递变长
- DB2使用笔记
- Linux chmod command
- Java汉字排序(1)排序前要了解的知识(数组和list的排序接口)
- 自定义的IntentFileter 无法找到activity
- error MSB6006: “CL.exe”已退出
- Codeforces Round #204 (Div. 2): B
- JS表格排序
- HTML5:footer定位(底部+居中)的探讨+div图片居中问题
- Android得到视频缩略图
- 一次线上Mysql数据库崩溃事故的记录
- java 三大框架
- snowflake分布式唯一id c#实现
- 洛谷 P3797 妖梦斩木棒
- 修改flume源码,使其HTTPSource具备访问路径功能
- 如何查询linux下BIOS信息
- 3.spring环境搭建
- 终于做完了这个pj