September 17, 2017
How do you write a pauseable Thread?

Thanks.
September 17, 2017
On Sunday, 17 September 2017 at 19:57:05 UTC, Enjoys Math wrote:
>
> How do you write a pauseable Thread?
>
> Thanks.


This seems to work:


module data_rates_thread;

import core.thread;
import std.datetime;


class DataRatesThread : Thread
{
private:
	uint loopSleep;
	bool paused;

public:
	this(uint loopSleep) {
		super(& run);
		this.loopSleep = loopSleep;
		paused = true;
	}

	void pause() {
		paused = true;
	}

	void start() {
		paused = false;
		super.start();
	}

private:
	void run() {
		import std.stdio;
		int k = 0;

		while (! paused) {
			writeln(k);
			k ++;
			if (loopSleep != 0)
				sleep(dur!"msecs"(loopSleep));
		}

		
	}
}


Which is not the best way to pause and resume, but it works for my application.