android多核,多线程该如何用?如何利用不同的核去分担处理数据?

云伊漫天 2014-11-13 08:44:28
有哪位大神知道如何在应用中利用android多核处理数据吗?本人想开辟多线程分批处理数据流,发现开辟线程以后,并没有提高速度,跟单线程一样,如何能利用多核,让我创建的线程利用不同的核去处理数据。总不能所有线程都纠结在一个核上处理数据吧,希望有了解大神指点迷津,在此先谢过各位了!
...全文
428 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
媒体盒子 2014-11-17
  • 打赏
  • 举报
回复
引用 6 楼 u014032607 的回复:
[quote=引用 4 楼 luowenlong860502 的回复:] 个人认为,采用多线程后,系统会自动采用多核处理
我用双线程测试加载数据的时候,的确是快了些,可是我发现好多时候测试的时间数据不稳定,能否为不同的线程设置优先级,能够更快的处理数据呢?[/quote] 当然可以设置优先级,不管是什么平台都是可以设置的
heaven_wsh 2014-11-15
  • 打赏
  • 举报
回复
引用 8 楼 u014032607 的回复:
[quote=引用 7 楼 tiantang198707 的回复:] [quote=引用 5 楼 u014032607 的回复:] [quote=引用 3 楼 tiantang198707 的回复:] [quote=引用 2 楼 u014032607 的回复:] [quote=引用 1 楼 tiantang198707 的回复:] 这个调度是由系统在底层控制的,并没有开放api给app来控制,当当前任务繁忙的时候,系统会wake up更多的核来处理任务 http://stackoverflow.com/questions/16562424/does-single-thread-application-utilize-multi-core-in-android
我现在有这样一个需求,我想分段读取文件到内存中,我该如何提高他们的读取速度呢?开辟service进程的话,service进程中的内存和我activity中的内存就分开了,能让进程之间共享内存吗 [/quote] 如果正常的加载不能满足,一定提高读取速度的话,如果是我,我可能会考虑用一个独立进程的service,在合适的时间提前预加载一部分data备用,然后activity要用的时候再bind到service上,通过开发的api获取data,同时传输控制信号,是否继续加载[/quote] 今天我测试了,用intentservice去分担主线程中的一部分耗时操作,感觉是比单纯主线程执行要快些。不过效果没有开双线程快,是不是service进程后台服务的开启就相当于开辟了一个子线程处理呀,我以为开辟service以后能够更充分的利用多核处理呢。另外,你说的传输控制,是否继续加载是如何实现的呢?[/quote] 首先service是跑在主线程里的,intentService是默认开一个子线程,handleMessage的部分是在子线程里执行,你也可以另外开多个线程。 传输控制,其实你也不可能让线程一直在后台跑,总要有什么时候开始,什么时候结束,如果service跑在独立的进程里,就只能通过bind后set一些变量来控制,这个就是我说的控制[/quote] 恩恩,知道了。谢谢哦,另外,我想知道如果是否service设置一个process属性对与当前进程的交互有没有什么区别吗?[/quote] 有区别啊,你设置了process就是独立进程了,交互就编程进程间通信了
heaven_wsh 2014-11-14
  • 打赏
  • 举报
回复
引用 2 楼 u014032607 的回复:
[quote=引用 1 楼 tiantang198707 的回复:] 这个调度是由系统在底层控制的,并没有开放api给app来控制,当当前任务繁忙的时候,系统会wake up更多的核来处理任务 http://stackoverflow.com/questions/16562424/does-single-thread-application-utilize-multi-core-in-android
我现在有这样一个需求,我想分段读取文件到内存中,我该如何提高他们的读取速度呢?开辟service进程的话,service进程中的内存和我activity中的内存就分开了,能让进程之间共享内存吗 [/quote] 如果正常的加载不能满足,一定提高读取速度的话,如果是我,我可能会考虑用一个独立进程的service,在合适的时间提前预加载一部分data备用,然后activity要用的时候再bind到service上,通过开发的api获取data,同时传输控制信号,是否继续加载
云伊漫天 2014-11-14
  • 打赏
  • 举报
回复
引用 1 楼 tiantang198707 的回复:
这个调度是由系统在底层控制的,并没有开放api给app来控制,当当前任务繁忙的时候,系统会wake up更多的核来处理任务 http://stackoverflow.com/questions/16562424/does-single-thread-application-utilize-multi-core-in-android
我现在有这样一个需求,我想分段读取文件到内存中,我该如何提高他们的读取速度呢?开辟service进程的话,service进程中的内存和我activity中的内存就分开了,能让进程之间共享内存吗
云伊漫天 2014-11-14
  • 打赏
  • 举报
回复
引用 7 楼 tiantang198707 的回复:
[quote=引用 5 楼 u014032607 的回复:] [quote=引用 3 楼 tiantang198707 的回复:] [quote=引用 2 楼 u014032607 的回复:] [quote=引用 1 楼 tiantang198707 的回复:] 这个调度是由系统在底层控制的,并没有开放api给app来控制,当当前任务繁忙的时候,系统会wake up更多的核来处理任务 http://stackoverflow.com/questions/16562424/does-single-thread-application-utilize-multi-core-in-android
我现在有这样一个需求,我想分段读取文件到内存中,我该如何提高他们的读取速度呢?开辟service进程的话,service进程中的内存和我activity中的内存就分开了,能让进程之间共享内存吗 [/quote] 如果正常的加载不能满足,一定提高读取速度的话,如果是我,我可能会考虑用一个独立进程的service,在合适的时间提前预加载一部分data备用,然后activity要用的时候再bind到service上,通过开发的api获取data,同时传输控制信号,是否继续加载[/quote] 今天我测试了,用intentservice去分担主线程中的一部分耗时操作,感觉是比单纯主线程执行要快些。不过效果没有开双线程快,是不是service进程后台服务的开启就相当于开辟了一个子线程处理呀,我以为开辟service以后能够更充分的利用多核处理呢。另外,你说的传输控制,是否继续加载是如何实现的呢?[/quote] 首先service是跑在主线程里的,intentService是默认开一个子线程,handleMessage的部分是在子线程里执行,你也可以另外开多个线程。 传输控制,其实你也不可能让线程一直在后台跑,总要有什么时候开始,什么时候结束,如果service跑在独立的进程里,就只能通过bind后set一些变量来控制,这个就是我说的控制[/quote] 恩恩,知道了。谢谢哦,另外,我想知道如果是否service设置一个process属性对与当前进程的交互有没有什么区别吗?
heaven_wsh 2014-11-14
  • 打赏
  • 举报
回复
引用 5 楼 u014032607 的回复:
[quote=引用 3 楼 tiantang198707 的回复:] [quote=引用 2 楼 u014032607 的回复:] [quote=引用 1 楼 tiantang198707 的回复:] 这个调度是由系统在底层控制的,并没有开放api给app来控制,当当前任务繁忙的时候,系统会wake up更多的核来处理任务 http://stackoverflow.com/questions/16562424/does-single-thread-application-utilize-multi-core-in-android
我现在有这样一个需求,我想分段读取文件到内存中,我该如何提高他们的读取速度呢?开辟service进程的话,service进程中的内存和我activity中的内存就分开了,能让进程之间共享内存吗 [/quote] 如果正常的加载不能满足,一定提高读取速度的话,如果是我,我可能会考虑用一个独立进程的service,在合适的时间提前预加载一部分data备用,然后activity要用的时候再bind到service上,通过开发的api获取data,同时传输控制信号,是否继续加载[/quote] 今天我测试了,用intentservice去分担主线程中的一部分耗时操作,感觉是比单纯主线程执行要快些。不过效果没有开双线程快,是不是service进程后台服务的开启就相当于开辟了一个子线程处理呀,我以为开辟service以后能够更充分的利用多核处理呢。另外,你说的传输控制,是否继续加载是如何实现的呢?[/quote] 首先service是跑在主线程里的,intentService是默认开一个子线程,handleMessage的部分是在子线程里执行,你也可以另外开多个线程。 传输控制,其实你也不可能让线程一直在后台跑,总要有什么时候开始,什么时候结束,如果service跑在独立的进程里,就只能通过bind后set一些变量来控制,这个就是我说的控制
云伊漫天 2014-11-14
  • 打赏
  • 举报
回复
引用 4 楼 luowenlong860502 的回复:
个人认为,采用多线程后,系统会自动采用多核处理
我用双线程测试加载数据的时候,的确是快了些,可是我发现好多时候测试的时间数据不稳定,能否为不同的线程设置优先级,能够更快的处理数据呢?
云伊漫天 2014-11-14
  • 打赏
  • 举报
回复
引用 3 楼 tiantang198707 的回复:
[quote=引用 2 楼 u014032607 的回复:] [quote=引用 1 楼 tiantang198707 的回复:] 这个调度是由系统在底层控制的,并没有开放api给app来控制,当当前任务繁忙的时候,系统会wake up更多的核来处理任务 http://stackoverflow.com/questions/16562424/does-single-thread-application-utilize-multi-core-in-android
我现在有这样一个需求,我想分段读取文件到内存中,我该如何提高他们的读取速度呢?开辟service进程的话,service进程中的内存和我activity中的内存就分开了,能让进程之间共享内存吗 [/quote] 如果正常的加载不能满足,一定提高读取速度的话,如果是我,我可能会考虑用一个独立进程的service,在合适的时间提前预加载一部分data备用,然后activity要用的时候再bind到service上,通过开发的api获取data,同时传输控制信号,是否继续加载[/quote] 今天我测试了,用intentservice去分担主线程中的一部分耗时操作,感觉是比单纯主线程执行要快些。不过效果没有开双线程快,是不是service进程后台服务的开启就相当于开辟了一个子线程处理呀,我以为开辟service以后能够更充分的利用多核处理呢。另外,你说的传输控制,是否继续加载是如何实现的呢?
媒体盒子 2014-11-14
  • 打赏
  • 举报
回复
个人认为,采用多线程后,系统会自动采用多核处理
heaven_wsh 2014-11-13
  • 打赏
  • 举报
回复
这个调度是由系统在底层控制的,并没有开放api给app来控制,当当前任务繁忙的时候,系统会wake up更多的核来处理任务 http://stackoverflow.com/questions/16562424/does-single-thread-application-utilize-multi-core-in-android
#### 收益: 学习《optee系统开发精讲 》套餐的收益如下:1、全体系的掌握optee的核心知识点(多核多线程、启动流程、各类API、TA/PTA/STA、driver、service、各类设计思想、内存管理、中断管理...);2、掌握TEE OS的设计核心思想(不限与optee,对其它TEE也是如此),能够进入软件架构层次的各项设计;3、快速熟悉大系统软件的各项组件,能够进行大系统软件之间的设计或排查问题4、学习和理解理解Armv8/Armv9架构、Trustzone架构5、技术水平提升N个level, 掌握快速的学习方法;#### 课程简介和大纲 该课程包含但不限与以下章节:optee的组件介绍optee os启动流程optee os的初始化流程optee os线程向量表及其作用进入optee os的八种方式optee os的异常向量表和设计模型optee os对irq中断的处理optee os对fiq中断的处理optee os的内存管理optee os的MMU的使用optee os的根密钥(信任根)optee os的RPC机制optee os的存储系统optee os的SFS系统optee os的RPMB机制的实现optee os的Timer实现optee os中实现的GP APIoptee os中的系统调度optee os中密码学函数的支持optee os中的线程调度CA/TA的开发模型optee os中的serviceoptee os中的 PTAoptee os中的 secure driveroptee os中的 Early TAoptee中spinlock的实现原理详解optee中mutex的实现方式optee的栈指针和栈内存的介绍optee中使用虚函数(平台客制化)的设计模型共享内存的介绍optee os的标准错误码TA的签名和验签TA链接静态库的方法

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧