Dec*_*her 5 c++ multithreading
std :: promise提供了一种设置值(类型为T)的方法,稍后可以通过关联的std :: future对象读取该值
这两者究竟如何相关联?
我的担忧是否合理,未来会与错误的承诺结合?
更新:来自行动中的并发的示例...(但代码无法编译)
#include <future>
void process_connections(connection_set& connections)
{
while(!done(connections)){
for(connection_iterator
connection=connections.begin(),end=connections.end();
connection!=end;
++connection)
{
if(connection->has_incoming_data()){
data_packet data=connection->incoming();
std::promise<payload_type>& p=
connection->get_promise(data.id);
p.set_value(data.payload);
}
if(connection->has_outgoing_data()){
outgoing_packet data=
connection->top_of_outgoing_queue();
connection->send(data.payload);
data.promise.set_value(true);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以将promise其future视为创建一次性数据通道。promise创建通道,并最终使用promise::set_value. future连接到通道,并future::wait在写入数据后读取并返回数据。
没有真正的问题,因为将 afuture与 a “配对”的唯一方法promise是 with promise::get_future。