我注意到 System.Threading.Thread 类实现了一个 finalizer(终结器),但没有实现 IDisposable 接口。推荐的做法是当实现 finalizer 时,总是应该同时实现 IDisposable 接口。Jeffrey Richter 写道,这个指导方针 "非常重要,应该始终无例外地遵循"。
那么为什么 Thread 没有实现 IDisposable 呢?似乎实现 IDisposable 不会造成破坏性的变化,反而能够允许 Thread 的 finalizable 资源进行确定性清理。
还有一个相关的问题:由于线程是可终结的,是否需要在执行过程中保持对正在运行的线程的引用,以防止它们在执行期间被终结?
ManagedThreadId
似乎是按顺序分配的——我不知道在创建了超过 20 亿个之后会发生什么。 - Jon SkeetThread
与Process
类似,因为它只是对本地资源(即操作系统线程)的句柄 -Process
实现了IDisposable,那么为什么Thread
没有呢?例如,两者都有终结器。 - Fowl