使用多个NSStream处理线程的最佳方法是什么?

时间:2013-01-14 17:37:47

标签: ios multithreading nsstream

很抱歉,但我必须先介绍一下。

我有一个名为MJPEGStreamer的班级。它使用NSOutputStreamNSInputStream来传输MJPEG数据。我将同时运行这些类中的16个。

起初,我只是在我的主要课程中这样做:

MJPEGStreamer *client = ...;
[client start];

MJPEGStreamer.m

[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

但这给了我非常差的表现和各种各样的错误。我假设我在主线程上运行了所有这些NSStream,所以我改变了这个调用:

[client start]

到此:

[NSThread detachNewThreadSelector:@selector(start) toTarget:client withObject:nil];

经过一些调试后,我发现它是创建这些线程,但没有正确停止它们。它将关闭NSStream s,但线程仍在那里。

然后我开始想知道最好的方法是什么:

  • 我应该保持原样,只需确保在关闭NSStream时杀死线程? (我如何杀死线程?)

  • 我是否应该创建一个所有MJPEGStreamer类都可以运行的新线程?

  • 我应该使用NSOperationQueue吗?

0 个答案:

没有答案