com.gemstone.gemfire.internal.cache.locks.QueuedSynchronizer.signalSharedWaiters()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(4.3k)|赞(0)|评价(0)|浏览(81)

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

QueuedSynchronizer.signalSharedWaiters介绍

[英]Release action for shared mode -- signals successor and ensures propagation. (Note: For exclusive mode, release just amounts to calling unparkSuccessor of head if it needs signal.)
[中]共享模式的释放动作——发出后续信号并确保传播。(注意:对于独占模式,如果需要信号,释放相当于调用head的unparkSuccessor。)

代码示例

代码示例来源:origin: io.snappydata/gemfire-core

/**
 * Releases in shared mode. Implemented by unblocking one or more threads if
 * {@link #tryReleaseShared(int, Object, Object)} returns true.
 * 
 * @throws IllegalMonitorStateException
 *           If releasing would place this synchronizer in an illegal state or
 *           lock is not held by the calling thread. This exception must be
 *           thrown in a consistent fashion for synchronization to work
 *           correctly.
 */
public final void releaseReadLock() {
 tryReleaseShared();
 this.sync.signalSharedWaiters();
}

代码示例来源:origin: io.snappydata/snappydata-store-core

/**
 * @see ReadWriteLockObject#releaseReadLock()
 */
public void releaseReadLock() {
 final boolean traceLock = traceLock();
 if (traceLock) {
  SanityManager.DEBUG_PRINT(GfxdConstants.TRACE_LOCK, fillSB(
    new StringBuilder("releaseReadLock: releasing ")
     .append("read lock for ")).toString());
 }
 final boolean result = tryReleaseShared(0 /* not used */,
   null /* not used in release */, null);
 if (result) {
  this.sync.signalSharedWaiters();
 }
 if (traceLock) {
  SanityManager.DEBUG_PRINT(GfxdConstants.TRACE_LOCK, fillSB(
    new StringBuilder("releaseReadLock: read lock release ")
     .append(result ? "successful" : "unsuccessful").append(
      " for lock ")).toString());
 }
}

代码示例来源:origin: io.snappydata/gemfirexd-core

/**
 * @see ReadWriteLockObject#releaseReadLock()
 */
public void releaseReadLock() {
 final boolean traceLock = traceLock();
 if (traceLock) {
  SanityManager.DEBUG_PRINT(GfxdConstants.TRACE_LOCK, fillSB(
    new StringBuilder("releaseReadLock: releasing ")
     .append("read lock for ")).toString());
 }
 final boolean result = tryReleaseShared(0 /* not used */,
   null /* not used in release */, null);
 if (result) {
  this.sync.signalSharedWaiters();
 }
 if (traceLock) {
  SanityManager.DEBUG_PRINT(GfxdConstants.TRACE_LOCK, fillSB(
    new StringBuilder("releaseReadLock: read lock release ")
     .append(result ? "successful" : "unsuccessful").append(
      " for lock ")).toString());
 }
}

代码示例来源:origin: io.snappydata/gemfirexd

/**
 * @see ReadWriteLockObject#releaseReadLock()
 */
public void releaseReadLock() {
 final boolean traceLock = traceLock();
 if (traceLock) {
  SanityManager.DEBUG_PRINT(GfxdConstants.TRACE_LOCK, fillSB(
    new StringBuilder("releaseReadLock: releasing ")
     .append("read lock for ")).toString());
 }
 final boolean result = tryReleaseShared(0 /* not used */,
   null /* not used in release */, null);
 if (result) {
  this.sync.signalSharedWaiters();
 }
 if (traceLock) {
  SanityManager.DEBUG_PRINT(GfxdConstants.TRACE_LOCK, fillSB(
    new StringBuilder("releaseReadLock: read lock release ")
     .append(result ? "successful" : "unsuccessful").append(
      " for lock ")).toString());
 }
}

代码示例来源:origin: io.snappydata/gemfire-core

Node s = node.next;
if (s == null || s.isShared())
 signalSharedWaiters();

代码示例来源:origin: io.snappydata/gemfire-core

/**
 * Signal any waiting threads in the {@link QueuedSynchronizer}. By default
 * the {@link QueuedSynchronizer} is obtained by a call to
 * {@link #getQueuedSynchronizer}.
 */
protected void signalQueuedSynchronizer(final Object context,
  final boolean shared) {
 final QueuedSynchronizer sync = getQueuedSynchronizer(context);
 if (shared) {
  sync.signalSharedWaiters();
 }
 else {
  sync.clearOwnerThread();
  sync.signalWaiters();
 }
}

代码示例来源:origin: io.snappydata/gemfire-core

/**
 * @see ExclusiveSharedSynchronizer#signalQueuedSynchronizer(Object, boolean)
 */
@Override
protected final void signalQueuedSynchronizer(final Object context,
  final boolean shared) {
 if (hasWaiters()) {
  // if there is waiting thread queue then need to empty that too
  final CustomEntryConcurrentHashMap<RegionEntry, QueuedSynchronizer>
    lockWaiters = ((LocalRegion)context).getLockWaiters();
  final QueuedSynchronizer sync = lockWaiters.get(this);
  if (sync != null) {
   if (shared) {
    sync.signalSharedWaiters();
   }
   else {
    sync.clearOwnerThread();
    sync.signalWaiters();
   }
  }
 }
}

相关文章