Một trong những đề xuất cho C++ 14 là Resumable Functions cung cấp cho C++ những gì có sẵn trong C# ngày hôm nay với các cơ chế async/await. Ý tưởng cơ bản là một hàm có thể bị tạm dừng trong khi chờ đợi thao tác không đồng bộ hoàn tất. Khi hoạt động không đồng bộ hoàn thành chức năng có thể được tiếp tục khi nó được tạm dừng. Điều này được thực hiện theo cách không bị chặn sao cho luồng mà từ đó chức năng có thể tiếp tục được gọi sẽ không bị chặn.Trong những ngữ cảnh nào sẽ tiếp tục các chức năng thực thi trong C++ 14?
Không rõ ràng đối với tôi trong đó ngữ cảnh (chuỗi) chức năng sẽ được tiếp tục. Nó sẽ được nối lại bởi chuỗi mà từ đó hàm bị tạm dừng (đây là cách nó được thực hiện trong C# như tôi hiểu nó) hay nó sử dụng một luồng khác?
Nếu nó được nối lại theo chuỗi mà từ đó nó đã bị tạm dừng, luồng có phải được đặt ở một số trạng thái đặc biệt hoặc trình lên lịch sẽ xử lý điều này không?
Tôi không biết bạn đã hỏi gì, nhưng nếu chức năng tiếp tục không bị chặn, thì có lẽ nó trả về một loại 'std :: optional' và người nhận phải kiểm tra xem kết quả có sẵn hay không không phải. Có vẻ như bạn đã có thể mã hóa như vậy với cơ chế hiện tại của 'std :: future' ...? –
Tôi không nghĩ rằng đề xuất đã được chấp nhận. – chris
@Karrek SB: Đề xuất được liên kết nếu bạn muốn đọc về nó. Bạn đúng rằng tương lai có thể được sử dụng để đạt được điều tương tự (thường là với tương lai cũng được đề xuất. Sau đó). Đề xuất chi tiết cách nó khác với việc sử dụng tương lai trực tiếp và tại sao điều này sẽ là một ý tưởng hay. –