大佬教程收集整理的这篇文章主要介绍了ios – SpriteKit,将流程放在另一个核心上?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class NattyScene: SKScene {
您可能有节点的自定义字段,或每帧发生的其他内容.现在想象你有一些计算,一个很好的例子可能是重心……
var globalCOG: CGPoint func updateCOG() { .. say,get all the .position of all Spaceship .. globalCOG = .. some point }
把它放在另一个线程上是很有意义的,假设像
>读取.positions的线程安全/快速
>另一个核心的另一个假定的线程,知道SpriteKit帧(这样你可以用通常的方式计算直到放弃时间等,也许你可能更喜欢跳帧或者其他什么 – 通常的线程游戏编程)
>你可以在线程安全/ blahblah将COG全局写回SpriteKit的其余部分
这是什么交易?
> Swift4 / SpriteKit中现代的成语究竟是什么?
>你如何强迫它进入另一个整体物理核心?
有任何想法吗?
override func update(_ currentTime: TimeInterval) { let x = safely get info from a thread on another physical core on the device print("Now that's cool") }
在另一个核心……
func loopy() { let x = safely look at info on NattyScene let globalCOG = calculation }
注意,KOD指向了DispatchQueue,这很棒 – 但有没有办法确保它真的在另一个核心?
@H_673_2@
原因1
您在iOS中没有这种低级别访问权限.
操作系统决定哪个线程在哪个核心上运行.
它还具有根据应用范围之外的多种条件打开和关闭核心的功能.
原因2
SpriteKit的游戏运行循环确实执行了一堆东西
>通话更新
>评估行动
>模拟物理
>适用约束
您的想法确实意味着在呼叫更新阶段执行以下步骤
>继续“背景”线程
>执行一些繁重的计算
>将结果返回主线程
但此时您无法保证游戏运行循环仍处于呼叫更新阶段.它可能在评估行动中,甚至可能在下一帧工作.
另一方面,渲染每个帧的时间不超过16毫秒.
可能解决方案
您可以充分利用当前核心允许的64位,而不是针对另一个cpu核心.
请看一下有关SceneKit的this Q/A,其中列出了SIMD的优点.
以上是大佬教程为你收集整理的ios – SpriteKit,将流程放在另一个核心上?全部内容,希望文章能够帮你解决ios – SpriteKit,将流程放在另一个核心上?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。