對C++ 14的建議之一是Resumable Functions,它給C++提供了今天C#中可用的異步/等待機制。基本思想是在等待異步操作完成時,可以暫停功能 。異步操作完成後,可以在暫停該功能的地方繼續執行該功能。這是以非阻塞的方式完成的,以便從中調用可恢復功能的線程不會被阻塞。在什麼情況下可恢復函數在C++ 14中執行?
我不明白在哪個上下文(線程)函數將被恢復。它會被暫停函數的線程恢復(這是它在C#中的完成方式,因爲我理解它),還是使用另一個線程?
如果它被暫停的線程恢復,那麼該線程是否必須處於某種特定的狀態,或者調度程序是否會處理它?
我不知道你問了什麼,但是如果resume函數是非阻塞的,那麼它可能會返回某種'std :: optional',接收方必須檢查結果是否可用或者不。聽起來你已經可以用'std :: future'的當前機制編寫代碼了......? –
我不認爲該提案獲得通過。 – chris
@Karrek SB:如果您想了解該提案,則提案已關聯。你說得對,可以用期貨來實現同樣的事情(通常也用未來的提議)。該提案詳細說明了它與直接使用期貨的不同之處,以及爲什麼這是一個好主意。 –