Проблема с потоками в C # - PullRequest
1 голос
/ 10 мая 2011

Существуют ли общие рекомендации по использованию многопоточности при вызове unmanaged кода?

Я случайно получаю ошибки нарушения доступа и, очевидно, копаться в этом unmanaged коде не имеет особого смысла.

Есть ли какие-то подходы, которые я мог бы попробовать вместо помещения этих вызовов в какое-то critical section для устранения ошибок нарушения?

1 Ответ

1 голос
/ 10 мая 2011

Это зависит от того, является ли неуправляемый компонент, который вы вызываете, запрограммированным потокобезопасным или нет.

Если вы получаете нарушения доступа только при параллельном вызове этого кода, похоже, что используемый вами компонент не является поточно-ориентированным.

Используйте оператор C # lock(), чтобы сделать его безопасным:

private static readonly myLockObject = new object();

...

lock (myLockObject)
{
   CallMyUnsafeCode();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...