I have a suggestion for a VDR change: I could use a way to end a cThread externally without having to wait and without hard canceling it.

My thread runs with the usual while (Running()) loop. To signal the loop to stop, it would be enough to set running=false. However, running is a private member of cThread. The only way to set running=false is to call Cancel(). This involves killing the thread and waiting for the thread to terminate. Two things I actually don't want.

There are two ways this could be done. First, by adding a function SoftCancel() { running=false; }. Or second, by modifying Cancel() to just set running=false if called with Cancel(-1) or Cancel(0,false) or similar.

As a workaround I'm now using while (Running() && running2) - which is imho ugly.

Background: I have to terminate several threads at the same time, and calling Cancel(1) sequentially would be a waste of time. I want to set running=false on all threads first, and then cancel the remains later.



vdr mailing list

Reply via email to