I'd like to contribute an pattern that I have begun using to make my thread names meaningful. As I see it, a thread is like a worker who performs a task. As such, I like to look at the task the thread is to perform, and give the thread a name that identifies it as the performer of that task.
For instance, a person whose task is to mop a floor might be called a janitor. In this case Mop(floor)
would be my task and janitor
would be my thread.
In C#, my code might look something like,
Thread janitor = new Thread(() => Mop(floor));
janitor.Start();
Or, if I have a stream that I want to monitor for incoming data, then the task is to monitor a stream. The thread, who's duty is to perform that task would be a stream monitor.
_streamMonitor = new Thread(() => Monitor(stream));
_streamMonitor.Start();