HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – SpriteKit,将流程放在另一个核心上?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_673_2@
想象一下你的

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的优点.

@H_673_2@ @H_673_2@
@H_673_2@
@H_673_2@

大佬总结

以上是大佬教程为你收集整理的ios – SpriteKit,将流程放在另一个核心上?全部内容,希望文章能够帮你解决ios – SpriteKit,将流程放在另一个核心上?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。