std::promise
有constructor,用于分é…用于å˜å‚¨å…±äº«çŠ¶æ€çš„内å˜ã€‚在我到目å‰ä¸ºæ¢çœ‹åˆ°çš„.then
的实现ä¸ï¼Œä¸€ä¸ªä»¥ç±»åž‹æ“¦é™¤æ–¹å¼å˜å‚¨å‡½æ•°ï¼Œç±»ä¼¼äºŽå…±äº«çŠ¶æ€ä¸çš„std::function
。 stlabçš„Concurrency库甚至å¯ä»¥æ”¾ä¸€ä¸ª
using then_t = std::vector<std::pair<executor_t, task<void()>>>;
进入共享状æ€ï¼ˆå¯ç”¨å¯æ‹†åˆ†æœŸè´§ï¼‰ã€‚
是å¦æœ‰æ„指定是å¦å¯ä»¥ä¸ºå»¶æœŸæŒ‡å®šåˆ†é…器?
在P0443R3ä¸ä»–们在1.2.9属性ä¸è¯´è‡ªå®šä¹‰å†…å˜åˆ†é…
 Â执行程åºå®žçŽ°åº”使用æ供的分é…å™¨è¿›è¡Œåˆ†é… Â Â å˜å‚¨æ交的函数对象所需的任何内å˜ã€‚
我认为这仅表示通过execute
函数æ交的代ç†çš„å˜å‚¨ï¼Œè€Œä¸æ˜¯ std::future
共享状æ€ä¸æŒ‡é’ˆçš„å˜å‚¨ã€‚
我查看了最近的期货或执行人æ案,我找ä¸åˆ°ä»»ä½•ä¸œè¥¿ã€‚最近的论文似乎倾å‘于将执行者置于未æ¥çš„共享状æ€ã€‚如果执行者有一个关è”的自定义分é…器,是å¦åº”该使用它?
我觉得我错过了什么。
-
编辑:我更多地想到这一点,我想我å¯ä»¥ç†è§£ä¸ºä»€ä¹ˆäººä»¬æƒ³è¦ç•™ä¸‹è¿™ä¸ªæœªæŒ‡æ˜Žçš„内容。如果期货由执行者进行å‚​​数化,那么它们的共享状æ€å¯èƒ½çœ‹èµ·æ¥åƒè¿™æ ·
template <typename Executor, typename T>
struct shared_state_t {
// some prevention from race condition, for example
std::atomic<unsigned> flags;
// some sort of exception or value representation, for example
std::variant<std::exception_ptr, T> maybe_value;
// some handle to continuation
continuation_t<Executor, T> continuation;
};
å…¶ä¸continuation_t<Executor, T>
ä¸éœ€è¦åˆ†é…内å˜ã€‚它å¯ä»¥æ˜¯æŒ‡å‘一个执行者Executor
的内部执行代ç†çš„指针,或者是std::function<void(T&&)>
çš„å¦ä¸€ä¸ªæ‰§è¡Œè€…的指针。