回收安全线程ID和线程堆栈何时被释放?

时间:2010-08-17 12:11:52

标签: windows multithreading memory-management

时,是否为线程保留/提交了堆栈
  • 线程终止
  • 线程对象被破坏了 (即线程终止并且线程的所有句柄都关闭)

更广泛地说,是否存在与已终止的线程关联的重要资源,但由于存在有效的句柄,因此仍然存在?


原因:我需要修改一种“作用域单例”,因此它不会返回单个对象,而是返回每个线程对象。我不能依赖线程创建/终止通知,更不用说在流程范围内通知了。

目前,我将对象存储在map<ThreadID, Object>中,并使用适合我的应用程序的缓存清理策略。为了保护自己免受OS“回收”线程ID的影响,我保持线程打开的句柄。 (拍摄

副作用是在某些极端情况下为长端点线程保持打开句柄。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

也许您应该使用pthread_getspecificpthread_setspecificpthread_key_create来管理每个线程的单身人士。