本文整理了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
[英]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();
}
}
}
}
内容来源于网络,如有侵权,请联系作者删除!