iOS 小知识-单元测试中测试线程竞争
来源:互联网 发布:微信支付接口开发 php 编辑:程序博客网 时间:2024/06/15 07:41
之前一直在进行单元测试,遇到了多线程问题。被这个问题困扰了好久,linux和java平台都有专门的测试工具,那iOS该如何测试呢。大家都知道苹果xcode提供了thead检测工具,但是只能在模拟器下使用,有没有办法测试真机的线程竞争呢。测试了多种方法,终于找到了一种暴力测试方法,测试工程见最后附件。
1、核心代码
- (void)execMultithreadWithBlock:(void(^)())block { for (int i = 0; i < 1000; i++) { @autoreleasepool { NSString *attr = [NSString stringWithFormat:@"%@",@([[NSDate date] timeIntervalSince1970])]; dispatch_queue_t cusQueue = dispatch_queue_create(attr.UTF8String, DISPATCH_QUEUE_CONCURRENT); dispatch_async(cusQueue, ^{ if (block) { block(); } }); } }}
2、基本思路
这个方法是利用GCD创建多个并行的queue,然后执行相应的block,attr用来保证每一个queue都是唯一的。这个方法在多个真机中测试,100%出现了线程竞争的情况。
3、单元测试中使用
在demo工程中使用了经典的单例创建方式,一种是线程安全的一种是非线程安全的。对比运行结果如下图:
demo链接
0 0
- iOS 小知识-单元测试中测试线程竞争
- iOS单元测试中测试异步方法
- java中关于线程的小知识
- IOS中线程小笔记
- iOS 单元测试--性能测试
- ios单元测试&UI测试
- iOS 单元测试--性能测试
- IOS TabBar小知识(不断更新中。。。)
- iOS开发中一些小知识
- 线程小知识
- leader/follower 中工作线程竞争解决方法
- ios 单元测试-耗时测试
- iOS单元测试之接口测试
- Xcode中iOS单元测试
- Xcode中iOS单元测试
- iOS零碎小知识
- IOS小知识
- IOS开发小知识
- 织梦DEDE系统建站 站长必备使用技巧 绝对的干货 掌柜呕心沥血总结
- Spring自我学习
- BZOJ 2618 [Cqoi2006]凸多边形
- java 四种内部类 使用细节(含代码)
- 实现append()难点
- iOS 小知识-单元测试中测试线程竞争
- 一些常用的第三方控件
- BZOJ 3436 小K的农场
- javascript/前端 有关数组的面试题
- Sass入门(二)
- 欢迎使用CSDN-markdown编辑器
- redis持久化那点儿事
- MOOC资源网站搜集
- 荆州理工职业学院美斯坦福校企合作专业乱收费