2015-04-14 71 views
3

說,我一些虛擬圖書館寫在拉斯特:當我從本機C代碼調用Rust dylib時會發生什麼?

#![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

您可能感興趣的[RustAudio](https://github.com/RustAudio)。 – Shepmaster

回答

4

沒有什麼特別的事情發生。彙編用extern C導出的Rust代碼看起來與任何其他本機代碼相同。

Rust函數調用會產生額外的線程嗎?

除非您的代碼創建它們,否則不會創建線程。

這種調用會發生多少阻塞 - 互斥鎖,鎖,堆內存分配等等。

不,除非您的代碼確實如此。

相關問題