com.oracle.truffle.api.nodes.Node.getLock()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(1.9k)|赞(0)|评价(0)|浏览(232)

本文整理了Java中com.oracle.truffle.api.nodes.Node.getLock()方法的一些代码示例,展示了Node.getLock()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Node.getLock()方法的具体详情如下:
包路径:com.oracle.truffle.api.nodes.Node
类名称:Node
方法名:getLock

Node.getLock介绍

[英]Returns a lock object that can be used to synchronize modifications to the AST. Don't lock if you call into foreign code with potential recursions to avoid deadlocks. Use responsibly.
[中]返回可用于同步对AST的修改的锁对象。如果调用具有潜在递归的外部代码以避免死锁,请不要锁定。负责任地使用。

代码示例

代码示例来源:origin: org.graalvm.truffle/truffle-api

@Override
public Lock getLock(Node node) {
  return node.getLock();
}

代码示例来源:origin: com.oracle.truffle/truffle-api

@Override
public Lock getLock(Node node) {
  return node.getLock();
}

代码示例来源:origin: org.graalvm.truffle/truffle-api

private boolean inAtomicBlock() {
  return ((ReentrantLock) getLock()).isHeldByCurrentThread();
}

代码示例来源:origin: com.oracle.truffle/truffle-api

private boolean inAtomicBlock() {
  return ((ReentrantLock) getLock()).isHeldByCurrentThread();
}

代码示例来源:origin: org.graalvm.truffle/truffle-api

/** @since 0.8 or earlier */
public final void atomic(Runnable closure) {
  Lock lock = getLock();
  try {
    lock.lock();
    closure.run();
  } finally {
    lock.unlock();
  }
}

代码示例来源:origin: com.oracle.truffle/truffle-api

/** @since 0.8 or earlier */
public final void atomic(Runnable closure) {
  Lock lock = getLock();
  try {
    lock.lock();
    closure.run();
  } finally {
    lock.unlock();
  }
}

代码示例来源:origin: org.graalvm.truffle/truffle-api

/** @since 0.8 or earlier */
public final <T> T atomic(Callable<T> closure) {
  Lock lock = getLock();
  try {
    lock.lock();
    return closure.call();
  } catch (RuntimeException | Error e) {
    throw e;
  } catch (Exception e) {
    throw new RuntimeException(e);
  } finally {
    lock.unlock();
  }
}

代码示例来源:origin: com.oracle.truffle/truffle-api

/** @since 0.8 or earlier */
public final <T> T atomic(Callable<T> closure) {
  Lock lock = getLock();
  try {
    lock.lock();
    return closure.call();
  } catch (RuntimeException | Error e) {
    throw e;
  } catch (Exception e) {
    throw new RuntimeException(e);
  } finally {
    lock.unlock();
  }
}

相关文章