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 } }