蓝牙通信 NSStream 是否应该需要一个单独的线程?
Should a Bluetooth-communicating NSStream require a separate thread?
使用 ExternalAccessory 与蓝牙设备通信,我正在使用 EASession
提供的输入和输出 NSStreams
向其发送消息。
在 Apple 的 EADemo
示例中,它将两个流都安排到主线程的 运行 循环中。但是,我注意到在许多使用 NSStream
s 的网络相关应用程序中,开发人员更喜欢创建一个单独的线程来执行 read/write 操作并将流调度到新线程的 运行 循环。
对于蓝牙设备,是否应该实现这种行为(创建一个单独的线程)或将其调度到主线程的 运行 循环不会导致严重的阻塞问题?
一般来说,最好在主线程上做的事情越少越好。我认为 EADemo 在主线程上执行此操作,因为它适用于小示例的上下文,但在大型生产应用程序的上下文中则不然。
使用 ExternalAccessory 与蓝牙设备通信,我正在使用 EASession
提供的输入和输出 NSStreams
向其发送消息。
在 Apple 的 EADemo
示例中,它将两个流都安排到主线程的 运行 循环中。但是,我注意到在许多使用 NSStream
s 的网络相关应用程序中,开发人员更喜欢创建一个单独的线程来执行 read/write 操作并将流调度到新线程的 运行 循环。
对于蓝牙设备,是否应该实现这种行为(创建一个单独的线程)或将其调度到主线程的 运行 循环不会导致严重的阻塞问题?
一般来说,最好在主线程上做的事情越少越好。我认为 EADemo 在主线程上执行此操作,因为它适用于小示例的上下文,但在大型生产应用程序的上下文中则不然。