Ios 什么&x2019;使用多个NSStreams处理线程的最佳方法是什么?
对不起,我得先介绍一下 我有一个叫做Ios 什么&x2019;使用多个NSStreams处理线程的最佳方法是什么?,ios,multithreading,nsstream,Ios,Multithreading,Nsstream,对不起,我得先介绍一下 我有一个叫做MJPEGStreamer的类。它使用NSOutputStream和NSInputStream来流式传输MJPEG数据。我将有多达16个这样的类同时运行 起初,我只是在我的主课上这样做: MJPEGStreamer *client = ...; [client start]; 在MJPEGStreamer.m中: [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefau
MJPEGStreamer
的类。它使用NSOutputStream
和NSInputStream
来流式传输MJPEG数据。我将有多达16个这样的类同时运行
起初,我只是在我的主课上这样做:
MJPEGStreamer *client = ...;
[client start];
在MJPEGStreamer.m
中:
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
但这给了我非常糟糕的表现和各种各样的错误。我假设我正在主线程上运行所有这些NSStream
s,因此我更改了此调用:
[client start]
为此:
[NSThread detachNewThreadSelector:@selector(start) toTarget:client withObject:nil];
经过一点调试,我发现它正在创建这些线程,但没有正确地停止它们。它将关闭NSStream
s,但线程仍然存在
然后,我开始想什么是最好的方法:
- 我是否应该保持原样,确保在关闭
s时杀死线程?(我如何杀死线程?)NSStream
- 我是否应该创建一个所有
类都将在其上运行的新线程MJPEGStreamer
- 我应该使用
NSOperationQueue