在主線程中創建的cudaGraphicsResource 對象,主線程中進行cudaGraphicsMapResources 操作是正確的,但是在子線程中進行cudaGraphicsMapResources 操作卻出錯了,報錯:400(cudaErrorInvalidResourceHandle)。
猜測應該是map操作不能誇線程的。
同樣的,d3d中也是context在哪個線程創建,則需要在對應的線程進行D3D11Resource的資源創建,否則也是報錯的。雖然cudaGraphicsResource 創建時沒有顯示的使用cudacontext,但是cudaresource也是準守這個原則的。
而對於resource 的訪問則沒有多線程的限制。當然爲了安全可以添加鎖。