特定のスレッドによって作成された特定のメモリ オブジェクトをクリーンアップしようとしています (したがって、そのスレッドにのみアクセスできます)。私がそれを達成する唯一の方法は、そのメモリブロックを解放するときにその特定のスレッドに切り替えることです。
これは、特定のメモリ コンテキストを割り当てる方法です: http://imagebin.ca/img/S6mwZBFu.jpg
これは私がやろうとしたことです:
代替テキスト http://imagebin.ca/img/DeTe9Z6h.jpg
私は元々、次のような方法でメモリ コンテキストの作成と破棄を追加しました。
int Thread2::main()
{
CudaMemoryContext *theCudaObj = new CudaMemoryContext();
while(!TerminateStatus())
{
...
}
delete theCudaObj;
return 0;
}
ただし、このアプローチはうまく機能していません。つまり、「delete theCudaObj;」をクリーンアップしているときにプログラムがクラッシュします。ライン。クリーンアップ時にアクティブなスレッドを切り替えるか、CUDA コンテキストを両方のスレッドからアクセスできるように割り当てて、両方のスレッドから簡単にクリーンアップしてアクセスできるようにすることができるかどうか疑問に思っています。提案をお寄せいただきありがとうございます。