在调用unmanaged
代码时是否有一些关于使用多线程的一般建议?
我随机收到访问冲突错误,显然深入研究unmanaged
代码没有多大意义。
我可以尝试一些方法,而不是将这些调用放入某种critical section
来删除违规错误吗?
答案 0 :(得分:1)
这取决于您调用的非托管组件是否编程为线程安全。
如果您仅在并行调用此代码时遇到访问冲突,则看起来您使用的组件不是线程安全的。
使用C#lock()
语句使其安全:
private static readonly myLockObject = new object();
...
lock (myLockObject)
{
CallMyUnsafeCode();
}