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: | 453 / 856 | 
| Version history: | 10 change(s) | 
| Referenced in: | [show references] |