Windows、ついにスレッドに名前が(安全に)付けられるようになる
- prev: http://d.hatena.ne.jp/mjt/20150823/p2
- Solaris、最新ベータでついにスレッドに名前が付けられるようになる
Windows 10 Creators Updateの目玉機能として、SetThreadDescription()が搭載されている。
- https://msdn.microsoft.com/library/windows/desktop/mt774976.aspx
- これを書いている時点では日本語訳は無い
従来は特殊なスレッド例外を使用してデバッガにスレッド名を通知するという方法で、これはVisualStudio以外のデバッガで普通に例外としてトラップされてしまうこともあり微妙に不便だった。
例えば、SDLでは、https://github.com/spurious/SDL-mirror/commit/ce48705f00bfb6b94dc838ec01a93b1963dab9d1 でIsDebuggerPresent()→RaiseException()によって名前を付けていたのを、動的にSetThreadDescription()を使用して付けるパスも用意した。
先週リリースされたVisual Studio 15.3で、このAPIで付けたスレッドがデバッガから観察できるようになった。依然コアダンプには対応していないようだ。
... 一昨年のSolarisもだけど、やっぱりマルチスレッドプログラミングが普及するにつれて、スレッドに名前を付けるニーズが高まっているのだろうか。これで、スレッドに名前が付けられないメジャーOSはもう無いといっても良い気もする。