parallel

2020-05-13  本文已影响0人  knull666

[TOC]

并发说明

并发,优雅的并发,一般都会用到pool的概念——比如,mysql、redis连接池;比如java/C/C++有线程池,golang有goroutine池;等等。
pool的目的,一是为了cach提高速度;其次就是上限控制——如果无上限的话,就没有必要用pool了。
pool的上限控制,即达到上限之后的处理方案,一般有如下三种

说来说去,似乎回归本源,就是当年最基本的并发控制——信号量(semaphore)
就实现来说,比较通用的控制方案,一般是令牌桶

test

并发控制,难点

取不到,等

不管是死等还是timeout的情况,取不到都需要block在那;

唤醒

不管是有token可以取还是timeout,都需要唤醒block在那的任务。

基本方案

基本方案,即用semaphore(cond+mutex--->block) + timer(定时器)组合的解决方案

golang方案

chan(block)+timer(定时器)

上一篇 下一篇

猜你喜欢

热点阅读