whie(true)
{
c_package* p12 = nullptr;
c_package* p13 = nullptr;
{
while(m_combined_packages_map.size()>=2)
{
//smalle critical section
{
c_auto_lock lock(m_combined_packages_map_lock);
auto head_pts = m_combined_packages_map.begin()->first;
auto count = m_combined_packages_map.count(head_pts);
if(count < 2)
{
break;
}
auto itr1 = m_combined_packages_map.find(head_pts);
p12 = itr1->second;
m_combined_packages_map.erase(itr1);
auto itr2 = m_combined_packages_map.find(head_pts);
p13 = itr2->second;
m_combined_packages_map.erase(itr2);
}
//call combine
if(p12->get_encoder_id() == 0)
{
combine(p12, p13);
}
else {
combine(p13, p12);
}
}
}
}
//combine
void combine(c_package *p12, c_package *p13)
{
}
基于multimap的合并算法merge combine
于 2022-08-17 17:26:18 首次发布