我在編程中遇到了一個問題,我沒有找到任何方便快捷的執行解決方案。暫停並恢復C++函數
我試圖實現某種狀態機:在入口處理一個字節,處理它,更改狀態,循環等...目的是處理字節流而不需要任何內存緩衝區(處理字節數字節)。
的類應該是這樣的:
class Decoder {
void next() {
int i = 0;
std::cout << i << "\n";
i++;
yield(); // pseudo code => should stop the function and save the current state (or simply not freeing allocated variables)
std::cout << i << "\n";
}
};
Decoder decoder = Decoder();
decoder.next(); // print 1
std::cout << "1.5" << "\n"; // print 1.5
decoder.next(); // print 2
一個解決辦法是建立一個step
財產保存步驟,然後用開關恢復,但性能會受到強烈衝擊。我想知道是否有辦法退出函數的執行,然後再恢復它?
要說清楚,我不想暫停整個程序,只是一個函數。暫停這樣的功能將返回給調用者並繼續執行程序,直到調用下一個next
。此外,我想避免線程和標準差(我更喜歡所有的環境代碼)。最後,如果您有任何其他替代方案來解決我的問題:爲內存有效地處理字節流,我願意接受您的建議。
感謝您的幫助。
_To清楚,我不想暫停整個程序,只有一個function._所以換句話說,你想要線程('std :: thread')? –
您在問題中缺少的術語是合作例程。沒有內置的方式(但是),但boost庫有一個協同例程框架的實現。 – StoryTeller
「我想避免... std」?爲什麼?您確實知道標準庫是* portable *,並且所有符合標準的C++編譯器都應該實現所有這些(使其可用於所有「環境」)。不使用標準圖書館並重新發明輪子將使您實際上成爲一家只有可能僱主經驗不足的單店。 –