What is the difference between this ThreadName and LocalName in the code below? Are they both ThreadLocal?
// Thread-Local variable that yields a name for a thread ThreadLocal<string> ThreadName = new ThreadLocal<string>(() => { return "Thread" + Thread.CurrentThread.ManagedThreadId; }); // Action that prints out ThreadName for the current thread Action action = () => { // If ThreadName.IsValueCreated is true, it means that we are not the // first action to run on this thread. bool repeat = ThreadName.IsValueCreated; String LocalName = "Thread" + Thread.CurrentThread.ManagedThreadId; System.Diagnostics.Debug.WriteLine("ThreadName = {0} {1} {2}", ThreadName.Value, repeat ? "(repeat)" : "", LocalName); }; // Launch eight of them. On 4 cores or less, you should see some repeat ThreadNames Parallel.Invoke(action, action, action, action, action, action, action, action); // Dispose when you are done ThreadName.Dispose();
Helic source share