Add basic exponential backoff to our code.

4 jobs from lock_free_task_stack in 4 minutes 8 seconds (queued for 3 seconds)
Status Job ID Name Coverage
  Build
passed #2892
build_cmake

00:46

 
  Test
passed #2893
run_tests

00:41

 
  Sanitizer
passed #2895
run_address_sanitizer

01:47

failed #2894
run_thread_sanitizer

00:53

 
    #6 operator() /builds/gitlab/las3/development/scheduling/predictable_parallel_patterns/test/scheduling_tests.cpp:61 (tests+0xab191)
#7 execute /builds/gitlab/las3/development/scheduling/predictable_parallel_patterns/lib/pls/include/pls/internal/scheduling/root_task.h:38 (tests+0xab191)
#8 pls::internal::scheduling::worker_routine() /builds/gitlab/las3/development/scheduling/predictable_parallel_patterns/lib/pls/src/internal/scheduling/scheduler.cpp:41 (tests+0xb60c6)
#9 pls::internal::base::thread<void (*)(), pls::internal::scheduling::thread_state>::start_pthread_internal(void*) /builds/gitlab/las3/development/scheduling/predictable_parallel_patterns/lib/pls/include/pls/internal/base/thread_impl.h:41 (tests+0xb68cf)
#10 <null> <null> (libtsan.so.0+0x296bd)
#11 start_thread <null> (libpthread.so.0+0x76da)
#12 __clone <null> (libc.so.6+0x12188e)

ERROR: Job failed: exit code 1