【发布时间】:2012-11-08 19:58:57
【问题描述】:
用例:
- 有很多请求需要处理。
- 处理每个请求所需的时间各不相同。
- 请求应该被同时处理(现在它们被推入由
dispatch_get_global_queue获得的全局队列中)。 - 来自同一客户端的请求最好应该同步处理,例如,ca的rca1的处理应该在开始处理之前完成rca2,同时在处理rcb1、rcd3等。
rca i : 来自客户端 a 的请求。 - 如果处理请求的时间过长,即超过
TIME_OUT,则来自同一客户端的其他请求可以开始处理。
当 rca1 处理完成但 when 尚未到达时,为每个客户端使用 dispatch_get_global_queue 和串行队列void dispatch_after(
dispatch_time_t when,
dispatch_queue_t queue,
dispatch_block_t block) 将不是最佳选择。
每个客户都有一个串行队列不能满足 5。
我知道GCD is based on a different paradigm,但在 GCD 中是否存在与 pthread_mutex_timedlock 或 lockBeforeDate 或 Lock.tryLock 等效的内容?
如何使用 GCD 实现定时锁提供的功能?
【问题讨论】:
标签: c multithreading pthreads grand-central-dispatch