Semaphore
2021-10-24 00:07:33 10 举报
Semaphore
作者其他创作
大纲/内容
返回值 0
acquire获取许可
否
release释放许可
true
acquireSharedInterruptibly
是,再次尝试调用如果成功广播告诉其他节点
setHeadAndPropagate
自旋,尝试返还许可(增加信号量 state),直到成功
自旋,判断pre是否是头节点
tryReleaseShared
releaseShared
doReleaseShared
将节点加入阻塞队列
修改 waitStatus 发出后续信号并确保传播
doAcquireSharedInterruptibly
广播方法
返回值 = 0
重组双向链表,清空无效节点,挂起当前线程
Semaphore
逻辑
tryAcquireShared
false
自旋,直到 当前信号量 - 所需信号量 < 0 或 CAS 成功(有足够资源,此时 返回值 >= 0,运行后会修改statr的值)
获取许可成功,继续运行
0 条评论
下一页