使用NSOutputStream和URLSessionUploadTask(__psynch_mutexwait)进行死锁

时间:2018-10-15 07:38:29

标签: objective-c macos networking nsstream nsoutputstream

我们的OSX应用正在使用

将多个文件上传到服务器
for (int i = 0; i < samling2.length; i++) {
    int totalValue = samling[i];
    if (i < samling.length) {
        totalValue += samling2[i];
    }
    arr[i] = totalValue;
}

上传时,上传卡住了。某些文件成功上传成功,有时更多文件却更少。

看一下调试导航器,我可以看到我的流线程显示了两次对func uploadTask(withStreamedRequest request: URLRequest) -> URLSessionUploadTask 委托的调用(一个接一个;第11帧和第5帧),这使我指向我称之为write的代码行: stream:handleEvent上的maxLength,在第0帧中的NSOutputStrem之后。 此时,应用程序处于阻塞状态,无法完成网络调用。

enter image description here
有人遇到过这个问题吗? 谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

似乎两次向您的处理程序发出信号以写入同一流。添加检查streamStatus是否为NSStreamStatusWriting并提前返回。