On Wednesday, 15 November 2017 at 11:57:25 UTC, Vladimirs Nordholm wrote:
Hello people from D-land.

To summarise my problem: I have a program in the terminal (Posix) with two threads: one which my main program is run on, and a second one which polls input via `poll(...)` and `read(...)`.

Let's call main thread T1, and a semi-blocking input-thread T2.

Every second T2 checks if T1 is terminated by checking if the a global flag is set to true. This is done with a `while(global_flag)`.

This feels to me like iffy code. So my question becomes: what is the best way to do this check with?


An easy way out is to have a shared(bool) and to use atomicLoad in T2, and atomicStore in the other thread T1.

For memory model reasons in x86, your code will work though because it's equivalent to atomicLoad(MemoryOrder.raw, x) but this isn't valid otherwise.


Reply via email to