Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 什么&x2019;使用多个NSStreams处理线程的最佳方法是什么?_Ios_Multithreading_Nsstream - Fatal编程技术网

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,但线程仍然存在

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

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

  • 我是否应该创建一个所有
    MJPEGStreamer
    类都将在其上运行的新线程

  • 我应该使用
    NSOperationQueue