说,我有一些用Rust编写的虚拟库:
#![crate_type = "dylib"]
#[no_mangle]
pub extern "C" fn foo() {
println!("bork!");
}
我正在使用C本机代码:
void foo();
int main()
{
foo();
return 0;
}
我对两件事特别感兴趣:
是否会在Rust函数调用中生成其他线程?
在这样的调用上会发生多少阻塞 - 堆上的互斥锁,锁,内存分配,等等。
我正在考虑将Rust用于实时DSP应用程序,因此我必须了解此处发生的任何阻塞操作。但是我不够自己在实际的C-Rust互操作实现中挖掘..
答案 0 :(得分:4)
没有什么特别的事情发生。使用extern C
导出的编译的Rust代码看起来与任何其他本机代码相同。
是否会在Rust函数调用中生成其他线程?
除非您的代码创建了线程,否则不会创建任何线程。
在这样的调用上发生了多少阻塞 - 堆上的互斥锁,锁,内存分配,等等。
不,除非你的代码是这样做的。