【发布时间】:2023-03-03 11:44:01
【问题描述】:
我正在尝试清理由特定线程创建的特定内存对象(因此只能由该线程访问)。我实现这一点的唯一方法是在释放该内存块时切换到该特定线程。
这是我分配特定内存上下文的方式: http://imagebin.ca/img/S6mwZBFu.jpg
这是我试图做的:
alt text http://imagebin.ca/img/DeTe9Z6h.jpg
我最初以如下方式添加了内存上下文的创建和销毁:
int Thread2::main()
{
CudaMemoryContext *theCudaObj = new CudaMemoryContext();
while(!TerminateStatus())
{
...
}
delete theCudaObj;
return 0;
}
但是,这种方法效果不佳,即当我清理“删除 theCudaObj;”时程序崩溃了线。我想知道是否可以在清理时切换活动线程,或者分配 CUDA 上下文以供两个线程访问,以便我可以通过两个线程轻松地清理和访问它。提前感谢您的建议。
【问题讨论】:
-
你怎么知道如果你在另一个线程上删除会避免崩溃?在我看来,崩溃的问题与线程无关。
-
不知道能不能避免。似乎问题在于能够在适当的内存上下文中删除 cuda 内存上下文。
标签: multithreading mfc cuda