C# P/Invoke调用的方法是否在同一线程中运行?
我有一个用C编写的本机库。下面是一个简单的函数,例如:C# P/Invoke调用的方法是否在同一线程中运行?,c#,.net,multithreading,mono,pinvoke,C#,.net,Multithreading,Mono,Pinvoke,我有一个用C编写的本机库。下面是一个简单的函数,例如: int my_test_method(int value) { return value * 2; } 我还在C#p/Invoke类中声明了此方法: [DllImport("helloworld.so", CallingConvention = CallingConvention.Cdecl)] public static extern int my_test_method(int value); 如果在辅助线程中调用此函数,本机代
int my_test_method(int value) {
return value * 2;
}
我还在C#p/Invoke类中声明了此方法:
[DllImport("helloworld.so", CallingConvention = CallingConvention.Cdecl)]
public static extern int my_test_method(int value);
如果在辅助线程中调用此函数,本机代码是否会在同一线程中执行?i、 e.如果本机函数是线程安全的,该方法是否会并行运行而不阻塞其他线程
Task.Factory.StartNew(() => {
int value = my_test_method(2);
});
额外好处:在Windows、Linux、OSX、iOS和Android下,对于.NET和Mono是这样吗?本机函数将在调用托管p/Invoke方法的同一线程上执行 如果在后台线程上调用托管p/Invoke方法,则本机函数将在该线程上执行
在Windows、Linux、iOS、OSX、Android、Windows Phone以及其他一些我已经忘记的版本下,对于.NET和Mono的所有版本都是如此。线程不受调用的影响,为什么要这样做呢?pinvoke也可以在单线程环境中工作。