fra*_*yan 4 android renderscript
我是RenderScript的新手,对Java层调用的阻塞/非阻塞性质仍然不太了解.一般问题是:哪些情况会阻止代码并允许RenderScript完成.尤其:
forEach_kernel()并且没有阻塞 - 我不得不添加一个额外的内容,Allocation.copyTo()以便我可以使用结果.有另一种方式吗?script.invoke_somefunc()调用然后立即调用是否有危险script.forEach_kernel()?1)您可以使用rs.finish()来确保等待内核完成.内核执行在RS中确实是异步的.
2)我们一次只允许一个内核执行(忽略ScriptGroup,你有一个内核的DAG,因此可能有一些额外的优化空间).在这种情况下,第二个内核在第一个内核完成之前不会开始运行.
3)Invokable函数(即从Java调用_*()运行的东西)不是异步的.您将阻止它们在Java端完成.因此,它们会相互阻塞,或者内核.如果你有一个内核后跟一个调用,你将异步启动内核,但是在内核完成之前调用才会开始.然后,您将等待调用完成.
还有一个细节.如果初始化程序不需要参数,则可以将其置于实际的"void init(void)"函数中.那些在创建ScriptC时运行一次.
| 归档时间: |
|
| 查看次数: |
788 次 |
| 最近记录: |