ID3D11Multithread::Enter方法是否具备可重入性?
ID3D11Multithread 内部互斥锁可重入性解答
是,ID3D11Multithread 接口内部使用的互斥锁是可重入锁。
相关特性说明如下:
- 官方接口规范明确允许同一线程多次调用
ID3D11Multithread::Enter()方法,每次调用都会使锁的内部引用计数+1 - 你需要调用次数完全相等的
ID3D11Multithread::Leave()方法,将引用计数减到0后,锁才会完全释放,允许其他线程获取访问权限
这类设计刚好匹配可重入锁的使用特征:你在已经持有D3D锁的函数内部,调用另一个同样会先调用Enter()获取锁的子函数时,不会出现死锁问题。
注意:即使锁支持可重入,也建议严格匹配
Enter和Leave的调用次数,避免锁长期持有导致的渲染性能下降、异常死锁等问题。
内容的提问来源于stack exchange,提问作者wheybags
相关产品推荐
相关产品推荐

