进一步了解第一个例子里的细节
乐观锁 顾名思义,乐观,人乐观就是什么是都想得开,船到桥头自然直。乐观锁就是我都觉得他们都没有拿到锁,只有我拿到锁了,最后再去问问这个锁真的是我获取的吗?是就把事情给干了。 典型的代表:CAS=Compare and Swap 先比较哈,资源是不是我之前看到的那个,是那我就把他换成我的。不是就算了。 在Java中java.util.concurrent.atomic包下面的原子变量就是使用了乐观锁的一种实现方式CAS实现。 通常都是 使用version、时间戳等来比较是否已被其他线程修改过。 使用悲观锁还是使用乐观锁? 在乐观锁与悲观锁的选择上面,主要看下两者的区别以及适用场景就可以了。 「响应效率」 如果需要非常高的响应速度,建议采用乐观锁方案,成功就执行,不成功就失败,不需要等待其他并发去释放锁。乐观锁并未真正加锁,效率高。一旦锁的粒度掌握不好,更新失败的概率就会比较高,容易发生业务失败。 「冲突频率」 如果冲突频率非常高,建议采用悲观锁,保证成功率。冲突频率大,选择乐观锁会需要多次重试才能成功,代价比较大。「重试代价」 如果重试代价大,建议采用悲观锁。悲观锁依赖数据库锁,效率低。更新失败的概率比较低。 乐观锁如果有人在你之前更新了,你的更新应当是被拒绝的,可以让用户从新操作。悲观锁则会等待前一个更新完成。这也是区别。 公平锁和非公平锁 公平锁 顾名思义,是公平的,先来先得,FIFO;必须遵守排队规则。不能僭越。多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。
在ReentrantLock中默认使用的非公平锁,但是可以在构建ReentrantLock实例时候指定为公平锁。 在SDIO模式或者SPI模式下,磁道都以高数据速率传输数据和时钟信号。 为了避免信号出现毛刺,必须考虑信号传播时间,以确保所有数据在时钟触发读取或写入的操作之前,接口处稳定。 所有数据信号的路径长度必须在十分之几毫米的长度内匹配,并且时钟长度必须长约1毫米。 为避免串扰,这些走线必须在其周围和下方保持良好的接地平面,并且还应通过足够数量的通孔连接各层。 总结
本文简单介绍了SD卡的分类以及常见属性,另外还简单介绍了SD卡的协议,在硬件设计上给出了SPI总线和SDIO总线的示例电路,篇幅有限,软件部分暂时没有进行展开介绍; (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |