2014-12-03 96 views
0

我有一個基本問題;對不起,這可能是非常愚蠢和通用的,但對我們的知識非常重要。 C/C++生成的代碼如何實現並行(AND)狀態?它是否使用多線程方法來實現它們?並行(AND)狀態的Simulink C/C++代碼生成

我生成了一個簡單場景的C源代碼,只有2個並行狀態,如圖所示。即使對於這個簡單的場景,這是一個複雜的代碼,但是我沒有看到任何線程化的基礎。

enter image description here

回答

0

你併發混淆並行。在simulink術語中,所有並行狀態都將在一個時間步中執行。這在模擬中是可以接受的,但在您可能想要充分利用多個執行內核時,不適用於實時系統的代碼生成。這也適用於一般的simulink塊。異步塊(具有不同的採樣率)和並行狀態在同一個線程上執行(在step函數中)。唯一可以控制的是執行順序。見下文:

http://uk.mathworks.com/help/stateflow/ug/execution-order-for-parallel-states.html

例如,這裏是用於下面的並行狀態所生成的代碼: Stateflow Model Generated Code

注意的是,在步驟()函數上線13 & 15的輸出是根據狀態流中的順序分配。

您可能想考慮PCT(並行計算工具箱)以查看它是否支持您的需求。

http://uk.mathworks.com/solutions/parallel-computing/index.html

另外,根據目標硬件上,你可能會發現它適合於使用C11的std ::線程的手工編寫的源代碼,並使用S函數的和/或遺留代碼工具帶來的是到您的模擬。