我有一個回調函數系統來組織我的引擎的初始化和運行時進程。我有一個類管理所有這些函數指針,它們存儲在STL向量容器中。它們通過類似(* iterator) - > execute()的包裝類來調用。C++調用函數指針
當我調用這些指針時,我在for循環中執行它。所以如果我有20個函數指針被註冊,它將會遍歷所有20個函數指針,並找到匹配的類型並通過包裝類調用函數。
我的問題是,當指針函數被調用時,循環是否等待該函數結束其執行,然後繼續循環或循環繼續在第一個函數運行時繼續調用函數?請注意,這一切都發生在同一個線程上。
我做了一些測試,似乎循環不會暫停執行其他功能。這似乎是某種僞線程? ......這看起來不正確。但是,結果可能不正確,因爲我使用std :: cout將結果打印到控制檯,所以我不知道是否由於某些不知道的ostream功能而發生這種情況。
如果你可以發佈一些代碼會更容易嗎?但是,for循環會在調用下一個函數之前等待每個函數完成。其中一個功能可能會產生一個線程。 – hmjd 2012-04-02 21:16:40
很可能這是因爲你沒有用每個std :: cout刷新流。你是用std :: endl還是用「\ n」來終止行? – 2012-04-02 21:17:39
使用您爲每次調用檢查的某種全局變量檢查它?如果你的代碼不是異步的,這種行爲不應該發生。 – chikuba 2012-04-02 21:19:48