iPhone3GS 是不是支持阻塞队列?

Posted

技术标签:

【中文标题】iPhone3GS 是不是支持阻塞队列?【英文标题】:Does iPhone3GS support block queues?iPhone3GS 是否支持阻塞队列? 【发布时间】:2012-02-17 04:02:01 【问题描述】:

我在运行 ios5.0 的 iPhone3GS 上遇到了一些代码问题

以下块永远不会被执行,即使它在 iOS5.0 的 iPhone4 上被正常调用。

日志语句永远不会出现,断点永远不会被触发。我查了一下,运动管理器和队列都不为空。

  [motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) 

            NSLog(@"motion event received");

//...
];

我是否遗漏了什么,或者我是否需要重新编写代码才能在没有阻塞队列的情况下工作? 感谢您对我们的任何意见!

更新:

我已经检查过这个方法,它有效:

   [motionManager startAccelerometerUpdatesToQueue:motionQueue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) 
        NSLog(@"accelerometerData event received");
    ];

【问题讨论】:

【参考方案1】:

这与阻塞队列无关。我相信您的问题是设备运动事件需要加速度计和陀螺仪(可以通过-deviceMotionAvailable 查询),但 iPhone 3GS 没有陀螺仪。因此,即使是非基于块的设备运动方法也不适合您。您应该考虑仅使用加速度计是否足以满足您的需求;否则你将不得不限制你的应用需要陀螺仪。

【讨论】:

以上是关于iPhone3GS 是不是支持阻塞队列?的主要内容,如果未能解决你的问题,请参考以下文章

并发编程中的阻塞队列概述

阻塞队列和线程池原理

双端阻塞队列LinkedBlockingDeque源码深入解析

阻塞队列之一:ArrayBlockingQueue

27.阻塞队列

什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?