0

用例

  1. 有很多请求需要处理。
  2. 处理每个请求所需的时间各不相同。
  3. 请求意味着同时处理(现在它们被推入由 获得的全局队列dispatch_get_global_queue)。
  4. 来自同一客户端的请求最好同步处理,例如,在开始处理 rca2 之前,应该完成对来自 ca 的rca1的处理,同时处理rcb1 rcd3。 rca i : 来自客户端 a 的请求。
  5. 如果处理请求的时间过长,即超过TIME_OUT,则来自同一客户端的其他请求可以开始处理。

当 rca1 处理完成但尚未到达 时,为每个客户端使用dispatch_get_global_queue一个串行队列void dispatch_after( dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block)将是次优的。when

每个客户有一个串行队列不会满足 5。


我知道GCD 基于不同的范例,但是 GCD 中是否有任何等效的pthread_mutex_timedlocklockBeforeDateLock.tryLock

如何使用 GCD 实现定时锁提供的功能?


Grand Central Dispatch (GCD) 参考

4

1 回答 1

0

您可以在 dispatch_semaphore 上使用超时的下一个作业块。但是,您需要等待作业提交,而不仅仅是作业执行……否则 GCD 将启动大量立即等待的线程,这不是您想要的。

于 2012-12-09T19:40:08.887 回答