Skip to content

Commit 79a7b7d

Browse files
committed
Reduce lock contention when interactive script queue is empty
1 parent 40e3145 commit 79a7b7d

File tree

3 files changed

+6
-0
lines changed

3 files changed

+6
-0
lines changed

CHANGES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[1.7.1]
22
- Fix interactive script running flag always being set to true. Update unit test.
3+
- Reduce lock contention when interactive script queue is empty
34

45
[1.7.0]
56
- Prevent game future execution by checking for script skipping in constructor

core/src/main/java/org/mini2Dx/miniscript/core/util/ScriptInvocationQueue.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,15 @@ public ScriptInvocation poll() {
3737
private ScriptInvocation pollInteractiveScript() {
3838
interactiveScriptLock.lockRead();
3939
boolean scriptRunning = interactiveScriptRunning.get();
40+
boolean queueEmpty = interactiveScriptQueue.isEmpty();
4041
interactiveScriptLock.unlockRead();
4142

4243
if(scriptRunning) {
4344
return null;
4445
}
46+
if(queueEmpty) {
47+
return null;
48+
}
4549

4650
ScriptInvocation result = null;
4751
interactiveScriptLock.lockWrite();

core/src/test/java/org/mini2Dx/miniscript/core/util/ScriptInvocationQueueTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public void testOnlyOneInteractiveScriptPolled() {
4141
}
4242
if(scriptInvocation.isInteractive()) {
4343
interactiveScriptsRunning.incrementAndGet();
44+
Assert.assertTrue(invocationQueue.isInteractiveScriptRunnung());
4445
}
4546
try {
4647
Thread.sleep(10);

0 commit comments

Comments
 (0)