C4droid异步调用框架完成初步实现
来源:互联网 发布:php csrf漏洞 编辑:程序博客网 时间:2024/05/23 21:21
由于C4droid目前(C4droid 5.0 with GCC 5.3)不支持std::future和std::async,所以异步调用必须手动实现。于是,使用std::thread,借助宏定义和指针等比较底层的东西,初步实现了C4d上可用的异步调用框架。
查看源代码: View Source On GitHub
大体的想法就是使用std::thread和detach()方法,完成线程的创建和分离。并不推荐使用join()方法因为异步调用可能会非常耗时。detach()之后thread对象的joinable()变为false. 离开作用域时的析构不会抛出异常影响整个流程。
使用宏定义和指针完成对cancel状态,over状态以及返回值的包装。但是这里存在一个问题,如果创建线程的函数在线程退出之前结束了运行,那么栈空间将被释放。此时如果线程函数仍然使用这些指针时,有可能发生未定义行为,更坏的情况是发生段错误。对于这样的错误目前还无法避免。(或许使用堆内存比较好,但是内存泄露又是一个棘手的问题)也许上一版(Async-Call Frame (ver. 1) On GitHub)的那种自行释放可以解决这个问题。这几天我会继续考虑这个问题并持续优化。
总之希望这个异步调用框架能够解决各位在C4droid试图进行异步调用时遇到的问题。ヾ(o◕∀◕)ノヾ
欢迎关注我在GitHub上的战争时代WarTime项目~ WarTime Project On GitHub
1 0
- C4droid异步调用框架完成初步实现
- 异步IO框架实现之完成端口(Completion Port)
- Ajax异步调用框架
- AsyncTask中各个函数详细的调用过程,初步实现异步任务
- 关于.NET异步调用的初步总结
- 使用完成端口框架开发异步模块
- XMLHTTP 实现异步调用
- wxPython异步调用实现
- java实现异步调用
- Axis2 实现异步调用
- 异步调用实现java
- WPF 实现异步调用
- 异步调用实现java
- asyn4j -- 异步方法调用框架
- AsyncTask -- Java异步调用框架
- AsyncTask -- Java异步调用框架
- asyn4j -- 异步方法调用框架
- AsyncTask -- Java异步调用框架
- Android动画之图片循环动画
- Percent百分比布局用法
- IOS SCNetworkReachability和Reachability监测网络连接状态
- 关于Xib使用AutoLayout动态设置cell高度
- 下载编译nexus设备映像
- C4droid异步调用框架完成初步实现
- 理解final static的使用场景以及具体含义
- android studio的DDMS里怎么找不到file explore,
- 初识spring mvc + mybatis
- POJ 3126 Prime Path
- Lable语句用法
- eclipse android 65536方法数问题.
- Android中service
- Python:编码与字符串