gig*_*gle 2 c++ serialization multithreading
伙计们,如果我有一个树结构,我想序列化树和子节点.如何并行地为每个节点进行序列化.如果我为每个节点分配一个独立的任务,输出数据将是无序的.并发序列化是否有一些模式?
编辑:如果结构不是树,而是DAG?如何处理这个结构?如何序列化DAG并使序列化成为并发.
这是递归并行或Fork/Join并行性的理想问题.
在树中的每个级别,生成一个任务以将每个节点序列化为临时缓冲区,然后等待这些任务并加入缓冲区.例如(假设二叉树)
std::string serialize_tree(tree t)
{
std::future<std::string> left_rep=std::async(serialize_tree,tree.left_node);
std::future<std::string> right_rep=std::async(serialize_tree,tree.right_node);
return left_rep.get()+right_rep.get(); // plus any further formatting
}
Run Code Online (Sandbox Code Playgroud)
显然,你需要检查空树或叶节点,或者其他什么,但这应该给你一个想法.
编辑:要处理DAG,您可以将与依赖关联的期货传递给异步调用,这样每个任务都会显式等待完成所需的任务.