当前位置:网站首页 > AI与大数据 > 正文

faiss数据库怎么读(数据库false什么意思)



AQS全称 AbstractQueuedSynchronizer 抽象队列同步器,java concurrent包里很多类中定义了Sync内部类继承自AQS,比如 ReentrantLock,CountDownLatch,Semaphore,CyclicBarrier(内部使用了ReentrantLock)等,下面我们来通过ReentrantLock源码解读AQS

1.定义两种资源共享方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)
2.定义了一个volatile int state,0代表空闲状态,1代表占用状态
3.定义了一个Node节点

4.定义了4个方法必须子类实现否则抛出异常

  • tryAcquire(int):独占方式。尝试获取资源,成功则返回true,失败则返回false。
  • tryRelease(int):独占方式。尝试释放资源,成功则返回true,失败则返回false。
  • tryAcquireShared(int):共享方式。尝试获取资源。负数表示失败;0表示成功,但没有剩余可用资源;正数表示成功,且有剩余资源。
  • tryReleaseShared(int):共享方式。尝试释放资源,如果释放后允许唤醒后续等待结点返回true,否则返回false。

javaAIS解析开源库_结点

1.LOCK
进入lock()方法(AQS非公平锁的实现类中)
ReentrantLock.java

javaAIS解析开源库_结点_02

这里重要的有三个方法:

  • tryAcquire(arg):尝试获取锁
  • addWaiter(Node.EXCLUSIVE):添加到同步队列
  • acquireQueued(addWaiter(Node.EXCLUSIVE), arg)):队列里自旋等待获取等

javaAIS解析开源库_结点_03

刚开始pred=null走enq(node);方法

javaAIS解析开源库_javaAIS解析开源库_04

javaAIS解析开源库_java_05

node为B节点,故p为head,因此进入tryAcquire(arg),再次抢占由于A线程一直占用所以还是false,因此进入
if (shouldParkAfterFailedAcquire(p, node) &&
parkAndCheckInterrupt())
interrupted = true;分支

  • shouldParkAfterFailedAcquire(p, node)
  • parkAndCheckInterrupt()

进入shouldParkAfterFailedAcquire(p, node) 方法

初始进入pred.waitStatus=0;进入 compareAndSetWaitStatus(pred, ws, Node.SIGNAL);
设置状态为Node.SIGNAL(-1)
第二次循环return true,进入parkAndCheckInterrupt()方法

B线程被阻塞挂起,使线程进入waiting状态,等待被unpark

javaAIS解析开源库_结点_06

进入unlock()方法

进入tryRelease(arg)方法

javaAIS解析开源库_公平锁_07

javaAIS解析开源库_公平锁_08

javaAIS解析开源库_javaAIS解析开源库_09

javaAIS解析开源库_javaAIS解析开源库_10

javaAIS解析开源库_java_11

  • tryAcquire(arg)
  • addWaiter(Node.EXCLUSIVE)
  • acquireQueued(addWaiter(Node.EXCLUSIVE), arg)
  • shouldParkAfterFailedAcquire(p, node)
  • parkAndCheckInterrupt()

release中

  • unparkSuccessor(Node node)

javaAIS解析开源库_javaAIS解析开源库_12

到此这篇faiss数据库怎么读(数据库false什么意思)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • websocket报错DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state2024-12-22 16:18:06
  • 异步代码同步执行的await用法2024-12-22 16:18:06
  • 最新免费AI视频工具!生成6秒视频只需30秒!2024-12-22 16:18:06
  • 中英双语介绍英国(The United Kingdom)以及Great Britain为什么翻译成大不列颠?2024-12-22 16:18:06
  • 如何AI写脚本?一键生成,让视频脚本创作更简单!2024-12-22 16:18:06
  • faiies什么意思(faeces什么意思)2024-12-22 16:18:06
  • Faissal名字(alyssa名字)2024-12-22 16:18:06
  • aiplus12蓝牙耳机说明书(ilahui蓝牙耳机说明书)2024-12-22 16:18:06
  • airplus ai蓝牙耳机说明书(airplusai蓝牙耳机说明书)2024-12-22 16:18:06
  • faiis是什么意思中文(fas是什么意思中文翻译成)2024-12-22 16:18:06
  • 全屏图片