run worker_thread..
{
  get_data_from_server...
  {
    {
    ::UpdateLock lock
    if (lock)
      increase_progress_bar
      triggerUpdate
    }
    // lock scope left
  }

  update_widgets...
  {
    {
    ::UpdateLock lock
    if (lock)
      update_pie_chart
      triggerUpdate
    }
    // lock scope left

    {
    ::UpdateLock lock
    if (lock)
      increase_progress_bar
      triggerUpdate
    }
    // locl scope left

    // repeate the update and increase steps within this scope for other widgets
  }
}