On Thursday, 7 May 2020 at 01:02:57 UTC, ag0aep6g wrote:
Thank you, this is 110% helpful.
Actually, I'd like to return the excess 10%. My dmd compiler
does not like:
import core.thread: sleep;
so I put the code back the way I had, just to get on with work.
Use `shared` so that all threads use the same variables:
shared bool running=true;
shared char command = '?';
"shared" did the job. I had read about "thread local" and
"shared" in D before, but did not comprehend. Now I do :)
This sequence of events is entirely possible:
1) main: cmd = command
2) cmdwatcher: command = c
3) main: command = ' '
It won't happen often, but if it does, your input has no effect.
For this tool, lost key hits are not a problem. At least, that's
what I say for now. I may be back next week for help with that.
For now, the trousered ape running the software will just have to
tap the key again. (Or the key + Enter.)