Commit
db7ce1c9c271edf6dc08db9f920adc93df9b2bb0
by Sven GothelBug 1213 - RecursiveThreadGroupLockImpl01Unfairish.unlock() always interrupts original-owner, even if not waiting at unlock() RecursiveThreadGroupLockImpl01Unfairish.unlock(): An interrupt() is always issued from group members on the original owner. This shall only happen, if the original owner is waiting within unlock() for all group members to be unlocked. This extra interrupt causes side-effects, see Bug 1211. Only issue the interrupt to wake-up the original owner iff waiting within unlock! +++ RecursiveLockImpl01CompleteFair: Issue 'Thread.interrupted()' to clear a slipped interrupt call after while-loop.
|
 | src/java/jogamp/common/util/locks/RecursiveLockImpl01CompleteFair.java (diff) |
 | src/java/jogamp/common/util/locks/RecursiveThreadGroupLockImpl01Unfairish.java (diff) |
|
 | src/junit/com/jogamp/junit/util/SingletonJunitCase.java (diff) |
Commit
47495cd2a228534578731346c8baf2b190bcd241
by Sven GothelBug 1213: Expose InterruptSource, SourcedInterruptedException and InterruptedRuntimeException - InterruptSource interface declares methods to retrieve the source of a Thread.interrupt() call. - InterruptSource.Thread implements InterruptSource, i.e. allows code running within such thread to learn about the interrupt source (stack trace). - SourcedInterruptedException is a InterruptedException specialization which may include the source of the causing Thread.interrupt() call. - InterruptedRuntimeException An unchecked RuntimeException propagating an InterruptedException where handling of the latter is not desired. The causing InterruptedException may be of type SourcedInterruptedException, hence a detailed stack trace analysis might be possible.
|
 | src/java/com/jogamp/common/util/InterruptSource.java |
 | src/java/com/jogamp/common/util/SourcedInterruptedException.java |
 | src/java/com/jogamp/common/ExceptionUtils.java (diff) |
 | src/java/com/jogamp/common/JogampRuntimeException.java (diff) |
 | src/java/com/jogamp/common/util/InterruptedRuntimeException.java |
Commit
2b97ed6d238a0db1e2cf7bdf15349e90eaaa8dfc
by Sven GothelBug 1213 (related): Fix TaskBase, RunnableTask and FunctionTask implementation and semantics - TaskBase - requires 'volatile boolean isExecuted' for atomic query of same semantics - fix isInQueue(): condition was reverse in regars to 'isExecuted' - expose 'Thread getExecutionThread()' as learned within run() method. - RunnableTask - deprecate: 'static invoke(final boolean waitUntilDone, final Runnable runnable)', since it's nonsense, use runnable.run() instead. - 'static RunnableTask invokeOnNewThread(..)' - uses InterruptSource.Thread - Persistent-Wait - Cancelable using InterruptedRuntimeException - FunctionTask - deprecate 'static <U,V> U invoke(final boolean waitUntilDone, final Function<U,V> func, final V... args)', since it's nonsense, use func.eval(args) instead. - 'static FunctionTask<U,V> invokeOnNewThread(..)' - uses InterruptSource.Thread - Persistent-Wait - Cancelable using InterruptedRuntimeException
|
 | src/java/com/jogamp/common/util/RunnableTask.java (diff) |
 | src/java/com/jogamp/common/util/FunctionTask.java (diff) |
 | src/java/com/jogamp/common/util/TaskBase.java (diff) |
Commit
1c4e2d3ea379fe6578dfb84e10f22729b71b1ae5
by Sven GothelBug 1213: Refine changes .. comments and API - Use InterruptSource.Thread.create(..), while reducing InterruptSource.Thread ctors to 3 variants. - Use InterruptSource.Thread instead of java.lang.Thread where possible - Use SourcedInterruptedException where possible - SingletonInstanceServerSocket: start(), stop() and run() - Persistent-Wait and Cancelable - Add @since 2.3.2
|
 | src/java/com/jogamp/common/util/InterruptSource.java (diff) |
 | src/java/com/jogamp/common/util/cache/TempFileCache.java (diff) |
 | make/scripts/runtest.sh (diff) |
 | src/java/com/jogamp/common/util/RunnableTask.java (diff) |
 | src/java/jogamp/android/launcher/LauncherTempFileCache.java (diff) |
 | src/java/com/jogamp/common/util/SourcedInterruptedException.java (diff) |
 | src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket01.java (diff) |
 | src/java/jogamp/common/util/locks/RecursiveLockImpl01CompleteFair.java (diff) |
 | src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket00.java (diff) |
 | src/java/com/jogamp/common/util/FunctionTask.java (diff) |
 | src/java/com/jogamp/common/util/TaskBase.java (diff) |
 | src/java/jogamp/common/util/locks/SingletonInstanceServerSocket.java (diff) |
|
 | src/junit/com/jogamp/common/util/locks/TestRecursiveThreadGroupLock01.java (diff) |
 | src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket00.java (diff) |
 | src/junit/com/jogamp/common/util/TestRunnableTask01.java (diff) |
 | src/java/jogamp/common/util/locks/SingletonInstanceServerSocket.java (diff) |
 | src/java/jogamp/common/util/locks/SingletonInstanceFileLock.java (diff) |
 | src/java/jogamp/android/launcher/MainLauncher.java (diff) |
 | src/junit/com/jogamp/common/util/locks/TestRecursiveLock01.java (diff) |
 | src/java/com/jogamp/common/util/IOUtil.java (diff) |