包装非托管代码时的线程安全:线程安全API是否需用Mutex?
问题解答
是否需要使用Mutex?
不需要。既然已经确认原生APIAPI_Func本身是线程安全的,说明它内部已经处理好多线程并发访问的同步逻辑,托管端额外加Mutex只会增加不必要的性能开销,完全没必要。托管端是否存在线程共享资源?
不存在。你的包装器包含的内容都不会产生线程共享资源:static extern函数只是托管代码调用原生API的入口,本身不会在托管侧存储任何可修改的共享状态;static const int是编译期确定的常量,无法被修改,不存在线程竞争问题;- 结构体声明只是类型定义,不会生成可被多线程共享的实例数据。
内容的提问来源于stack exchange,提问作者Piglet
相关产品推荐
相关产品推荐

