我正在开发一个可以向用户发送文件和操作的应用程序。用户可以随时从服务器请求文件(客户端服务器模型)。有时文件可能相当大(例如 10 mb),在发送时可能会延迟其他小动作发送给连接的用户。似乎 Gamekit 有一个用于发送的线程和一个用于接收的单独线程。
我想知道是否可以有一个额外的发送线程来确保较小的操作数据包不必等待发送大文件。我试图创建一个具有盛大中央调度的队列,但不幸的是,发送似乎仍然只使用一个线程。
dispatch_async(pdfSendQ, ^{
NSString *filePath = [_document.fileURL path] ;
if (!_pdfNSData)
_pdfNSData = [NSData dataWithContentsOfFile:filePath];
for(NSData* packet in self.packets) {
NSError* error = nil;
[_session sendData:packet toPeers:[NSArray arrayWithObject:peerID] withDataMode:GKSendDataReliable error:&error];
if(error != nil) {
[[NSNotificationCenter defaultCenter] postNotificationName:kPacketFailedNotification object:self userInfo:[NSDictionary dictionaryWithObject:error forKey:@"error"]];
} else {
[[NSNotificationCenter defaultCenter] postNotificationName:kPacketSentNotification object:self];
}
}
[[NSNotificationCenter defaultCenter] postNotificationName:kFileSentNotification object:self];
});
我想有可能让单独的较小的动作数据包“中断”大文件的发送,但这会相当复杂,我想知道是否有更简单的方法。