阻塞场景
ch如果为空, 读取会阻塞,
ch如果为满, 写入会阻塞.
实现目标
为了上面两种场景不阻塞
解决发难
判空与读取放在一个事务
判满与写入放在一个事务
方式1:select+default, 缺点,会把ch取一个或存一个(改变了ch的状态)
方式2:两种独特的case,直接使用if