用例:
- 有很多请求需要处理。
- 处理每个请求所需的时间各不相同。
- 请求意味着同时处理(现在它们被推入由 获得的全局队列
dispatch_get_global_queue
)。 - 来自同一客户端的请求最好同步处理,例如,在开始处理 rca2 之前,应该完成对来自 ca 的rca1的处理,同时处理rcb1 、 rcd3等。
rca i : 来自客户端 a 的请求。
- 如果处理请求的时间过长,即超过
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_timedlock或lockBeforeDate或Lock.tryLock?
如何使用 GCD 实现定时锁提供的功能?