【发布时间】:2014-03-19 12:21:35
【问题描述】:
我使用NSOperationQueue 实现了线程池。其中我将maxConcurrentOperationCount 设置为25。即同时同时运行 25 个线程。
我正在使用NSOperationQueue 将块上传到服务器。因此,块被分配给前 25 个线程。在NSOperationQueue 满后,我想暂停分块读取部分,然后每当队列中的线程完成时,恢复分块部分以将新线程分配给NSOperationQueue 以替换完成的线程。
我的代码:
NSOperationQueue *operationQueue = [NSOperationQueue new];
operationQueue.maxConcurrentOperationCount=5;
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(upload:) object:f_objChunkDetails->FileStream];
NSUInteger oprCnt=operationQueue.operationCount;
if(oprCnt >= 5) {
// wait till queue has a free slot
} else {
[operationQueue addOperation:operation];
}
那么NSOperationQueue中如何使用暂停和恢复呢?如何在 Objective-C 中实现ManualResetEvent?
【问题讨论】:
标签: multithreading macos nsoperation nsoperationqueue manualresetevent