摘要:
一种简单高效的生产者消费者多线程实现初衷解决几个问题:主线程阻塞时间太长。工作线程阻塞时间太长。过多的同步代码导致结构复杂。不能动态的调整工作线程数量。实现方式主线程有一个任务队列A,每个工作线程也有一个任务队列B。主线程中收到一个请求时,在队列A中添加任务。主线程在循环中:如果工作线程没有锁定队列B,那么主线程从队列A中取任务,放到队列B中,并唤醒工作线程。检查是否锁定使用TryEnterCriticalSection(Windows)/pthread_mutex_trylock(Linux)。如果工作线程锁定了队列B,那么主线程跳过,避免主线程阻塞。如果有已经完成的任务,则回调给请求者。任 阅读全文