Setting native OS thread name (eg, via prctl)

2015-12-22 Thread Arun Chandrasekaran via Digitalmars-d-learn
I have this trivial code where the main thread clones a child 
thread.


import std.stdio;
import core.thread;
import std.concurrency;

class DerivedThread : Thread
{
this()
{
super();
}

void quit()
{
_quit = true;
}
private:
void setOSThreadName()
{
// TODO: Is there a way to set the native OS thread name, 
worst case, via prctl?

}
void run()
{
setOSThreadName();
while(!_quit)
{
writeln("Hello from ", thisTid);
Thread.sleep(dur!("seconds")(1));
}
writeln("I'll exit now.");
}

bool _quit = false;
string _threadName = "Derived";
}

void main()
{
auto derived = new DerivedThread();
derived.start();
Thread.sleep(dur!("seconds")(4));
derived.quit();
derived.join();
}

What do i have to do to set the thread name in setOSThreadName 
(for instance, on Linux, it will reflect in proc filesystem).


Re: Setting native OS thread name (eg, via prctl)

2015-12-22 Thread Arun Chandrasekaran via Digitalmars-d-learn

On Tuesday, 22 December 2015 at 16:08:01 UTC, Dejan Lekic wrote:

Arun, isn't that what the 'name' property is there for?


Hi Dejan,

Thanks for a quick reply.

Setting the name property is not reflecting in the OS level. May 
be it is just used only at the object level?


After setting the thread name, I would like to see the it 
reflect, for instance, in the output of `top` command. You can 
press H in top to toggle threads and see their names there.


Cheers.


Re: Setting native OS thread name (eg, via prctl)

2015-12-22 Thread Dejan Lekic via Digitalmars-d-learn

Arun, isn't that what the 'name' property is there for?