diff --git a/7.TheConcurrencyAPI/item39.md b/7.TheConcurrencyAPI/item39.md index 256ca9d..abdb7d9 100644 --- a/7.TheConcurrencyAPI/item39.md +++ b/7.TheConcurrencyAPI/item39.md @@ -104,7 +104,7 @@ cv.notify_one(); //通知反应任务(第2部分) 方案很简单。检测任务有一个`std::promise`对象(即通信信道的写入端),反应任务有对应的*future*。当检测任务看到事件已经发生,设置`std::promise`对象(即写入到通信信道)。同时,反应任务。`wait`会锁住反应任务直到`std::promise`被设置。 -现在,`std::promise`和*futures*(即`std::future`和`std::shared_future`)都是需要类型形参的模板。形参表明通过通信信道被传递的信息的类型。在这里,没有数据被传递,只需要让反应任务知道它的*future*已经被设置了。我们在`std::promise`和*future*模板中需要的东西是表明通信信道中没有数据被传递的一个类型。这个类型就是`void`。检测任务使用`std::promise`,反应任务使用`std::future`或者`std::shared_future`。当感兴趣的事件发生时,检测任务设置`std::promise`,反应任务在*future*上`wait`。尽管反应任务不从检测任务那里接收任何数据,通信信道也可以让反应任务知道,检测任务什么时候已经通过对`std::promise`调用`set_value`“写入”了`void`数据。 +现在,`std::promise`和*futures*(即`std::future`和`std::shared_future`)都是需要类型参数的模板。形参表明通过通信信道被传递的信息的类型。在这里,没有数据被传递,只需要让反应任务知道它的*future*已经被设置了。我们在`std::promise`和*future*模板中需要的东西是表明通信信道中没有数据被传递的一个类型。这个类型就是`void`。检测任务使用`std::promise`,反应任务使用`std::future`或者`std::shared_future`。当感兴趣的事件发生时,检测任务设置`std::promise`,反应任务在*future*上`wait`。尽管反应任务不从检测任务那里接收任何数据,通信信道也可以让反应任务知道,检测任务什么时候已经通过对`std::promise`调用`set_value`“写入”了`void`数据。 所以,有