gpt4 book ai didi

c# - P/Invoke 调用的方法是否在同一个线程中运行?

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:27 25 4
gpt4 key购买 nike

我有一个用 C 编写的 native 库。例如,这是一个简单的函数:

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);

如果我在辅助线程中调用这个函数,本地代码会在同一个线程中执行吗?即,如果 native 函数是线程安全的,此方法是否会并行运行而不会阻塞其他线程?

Task.Factory.StartNew(() => {
int value = my_test_method(2);
});

额外奖励:在 Windows、Linux、OSX、iOS 和 Android 下,对于 .NET 和 Mono 是否如此?

最佳答案

native 函数将在调用托管 P/Invoke 方法的同一线程上执行。

如果您在后台线程上调用托管 P/Invoke 方法,则 native 函数将在该线程上执行。

对于所有版本的 .NET 和 Mono,Windows、Linux、iOS、OSX、Android、Windows Phone 以及我可能忘记的其他一些版本都是如此。

关于c# - P/Invoke 调用的方法是否在同一个线程中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29217567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com