Terminating multiple processes
Arek
arychlinski at gmail.com
Wed Jan 31 22:15:52 UTC 2018
On Wednesday, 31 January 2018 at 17:44:37 UTC, Russel Winder
wrote:
> So, I have an application which has a sort of nano-services
> architecture, basically it is a set of communicating processes.
> Terminating those processes blocked on an input channel is
> quite easy, send a terminate message on the input channel. But
> what about a process that has no input channel, one that is
> blocked on OS events?
>
> Is there a way of forcibly, but nicely, terminating a spawned
> process that never executes `receive()`?
Assuming your're talking about threads: there's no secure method
of forcing the thread to stop. Threads share the state (eg. can
hold the locks) and killing them is always risky.
If your threads are blocked reading the socket, you probably can
close these sockets and exit after the read error.
Another way is to use atomic flag indicating that thread needs to
be interrupted.
After any blocking operation, the thread have to check this flag
and finish the job.
It's good to use timeouts (eg socket timeout) in such scenario
(if possible).
Arek
More information about the Digitalmars-d-learn
mailing list