蓝牙通信 NSStream 是不是需要单独的线程?

Posted

技术标签:

【中文标题】蓝牙通信 NSStream 是不是需要单独的线程?【英文标题】:Should a Bluetooth-communicating NSStream require a separate thread?蓝牙通信 NSStream 是否需要单独的线程? 【发布时间】:2015-06-29 20:48:03 【问题描述】:

使用 ExternalAccessory 与蓝牙设备通信,我使用 EASession 提供的输入和输出 NSStreams 向它发送消息。

在 Apple 的 EADemo 示例中,它将两个流调度到主线程的运行循环。但是,我注意到在许多使用NSStreams 的网络相关应用程序中,开发人员更喜欢创建一个单独的线程来执行读/写操作并将流调度到新线程的运行循环。

对于蓝牙设备,是否应该实现这种行为(创建单独的线程)或将其调度到主线程的运行循环不会导致严重的阻塞问题?

【问题讨论】:

【参考方案1】:

一般来说,在主线程上做的越少越好。我认为 EADemo 在主线程上执行此操作,因为在小示例的上下文中它是适用的,但在大型生产应用程序的上下文中则不是。

【讨论】:

以上是关于蓝牙通信 NSStream 是不是需要单独的线程?的主要内容,如果未能解决你的问题,请参考以下文章

Android中的线程或服务中的蓝牙通信?

NSStream 委托 NSStreamEventHasBytesAvailable 未被调用

个人笔记--多线程(安全和通信)

怎么对STM32用蓝牙串口下载程序?手里32能用串口下载程序,蓝牙也能通信,就是怎么也下不了程序!

为啥蓝牙在android中需要DBUS通信方式?

Android 蓝牙:是不是已连接?