Libraryless. Click here for Pure Java version (7417L/41K).
transient sclass RSTOverQ implements Runnable { Runnable runnable; Q q = startQ(); F0<AutoCloseable> enter; // optional ownership marker, e.g. for DynModules bool trigger, running; *(Runnable *runnable) {} *(Runnable *runnable, Q *q) { assertNotNull(q); } *(Q q, Runnable runnable) { this(runnable, q); } void trigger() { go(); } synchronized void go() { if (trigger) ret; trigger = true; q.add(r _run); } public void run() { go(); } void get() { go(); } // so you can use the ! syntax synchronized bool running() { ret running; } void _run() { synchronized(this) { if (!trigger) ret; running = true; trigger = false; } try { temp callF(enter); pcallF(runnable); } finally { synchronized(this) { running = false; } } } synchronized bool triggered() { ret trigger; } void waitUntilDone { while (running()) sleep(1); } S stats() { ret renderVars(+trigger, +running, +q, +runnable); } }
Began life as a copy of #1006319
download show line numbers debug dex old transpilations
Travelled to 5 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1030787 |
| Snippet name: | RSTOverQ (ReliableSingleThread that shares thread with a Q) [probably works] |
| Eternal ID of this version: | #1030787/11 |
| Text MD5: | 5ad14b275de166318de3817fc866d53f |
| Transpilation MD5: | 08be27ad77fb2e546b65338df58d47ba |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2022-03-03 16:49:50 |
| Source code size: | 1080 bytes / 47 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 454 / 857 |
| Version history: | 10 change(s) |
| Referenced in: | #1034167 - Standard Classes + Interfaces (LIVE, continuation of #1003674) |