蓝牙通信 NSStream 是不是需要单独的线程?
Posted
技术标签:
【中文标题】蓝牙通信 NSStream 是不是需要单独的线程?【英文标题】:Should a Bluetooth-communicating NSStream require a separate thread?蓝牙通信 NSStream 是否需要单独的线程? 【发布时间】:2015-06-29 20:48:03 【问题描述】:使用 ExternalAccessory 与蓝牙设备通信,我使用 EASession
提供的输入和输出 NSStreams
向它发送消息。
在 Apple 的 EADemo
示例中,它将两个流调度到主线程的运行循环。但是,我注意到在许多使用NSStream
s 的网络相关应用程序中,开发人员更喜欢创建一个单独的线程来执行读/写操作并将流调度到新线程的运行循环。
对于蓝牙设备,是否应该实现这种行为(创建单独的线程)或将其调度到主线程的运行循环不会导致严重的阻塞问题?
【问题讨论】:
【参考方案1】:一般来说,在主线程上做的越少越好。我认为 EADemo 在主线程上执行此操作,因为在小示例的上下文中它是适用的,但在大型生产应用程序的上下文中则不是。
【讨论】:
以上是关于蓝牙通信 NSStream 是不是需要单独的线程?的主要内容,如果未能解决你的问题,请参考以下文章
NSStream 委托 NSStreamEventHasBytesAvailable 未被调用