相关疑难解决方法(0)

在后台线程上限制CPU使用率

我有一个CPU密集型任务,我希望它使用更少的CPU并占用更多时间.

我在启动时将大量SCNNodes加载到场景中.它占用了大量内存,我希望它以安全的速度工作,而不是滞后我的系统或可能导致它崩溃.

这是我用来加载节点的代码.

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void){
    NSLog(@"Start Loading Level");
    SCNNode *cameraNode = [SCNNode node];
    cameraNode.camera = [SCNCamera camera];
    cameraNode.camera.zFar = 5000;
    cameraNode.position = SCNVector3Make(0, 3000, 0);
    cameraNode.rotation = SCNVector4Make(1, 0, 0, -M_PI_2);
    [scene.rootNode addChildNode:cameraNode];
    for (int i = 0; i < 100000; i++)
    {
        int side = 3000;
        SCNNode *node = [SCNNode node];
        node.geometry = [SCNBox boxWithWidth:1 height:1 length:1 chamferRadius:0];
        node.position = SCNVector3Make(arc4random_uniform(side) - side / 2.0,
                                       0,
                                       arc4random_uniform(side) - side / 2.0);
        [scene.rootNode addChildNode:node];
    }
    dispatch_async(dispatch_get_main_queue(), ^(void){
        NSLog(@"Finished"); …
Run Code Online (Sandbox Code Playgroud)

objective-c scenekit

14
推荐指数
1
解决办法
1515
查看次数

SceneKit - 线程 - 如何处理哪个线程?

使用SceneKit时,更新方法:

func renderer(aRenderer: SCNSceneRenderer, updateAtTime time: NSTimeInterval)    
Run Code Online (Sandbox Code Playgroud)

没有在主要的thead上调用,而是在其他一些线程上调用.

我应该在主线程上做什么,以及必须在这个"SceneKit线程"上做些什么?

我应该在哪里添加新的节点/几何?

修改这些对象的位置/等在哪里安全?

multithreading objective-c ios scenekit swift

12
推荐指数
2
解决办法
2301
查看次数

标签 统计

objective-c ×2

scenekit ×2

ios ×1

multithreading ×1

swift ×1