3.12.6. Locking timeline¶
Schematic timeline and call hierarchy showing lock set & unset:
task_t%update
refine_t%check_current
refine_needed
need_to_support
tlist%lock%set +|
link%lock%set +| |
.. | |
link%lock%unset -| |
tlist%lock%unset -|
selective_refine
make_child_patch
parent%lock%set +|
parent%lock%unset -|
child%link%init
child%init
download_link
tlist%lock%set +|
tlist%append_link |
tlist%init_nbors (parent%link) |
link%lock%set .
do .
link%add_nbor_by_rank .
link%set_status_and_flags
link%copy_nbor_list (... nbors)
link%remove_nbor_list (... %nbors_by_level)
link%sort_nbors_by_level (... %nbors_by_level)
link%increment_needed (... %nbors_by_level)
link%decrement_needed (nbors)
link%remove_nbor_list (old_head)
init_nbors (child_link)
ditto
init_nbor_nbors (child_link)
link%lock%set
self%init_nbors (link) +|
copy_nbor_list (link%nbor, nbors) |
link%lock%unset -|
for nbor in link%nbor
init_nbors (nbor%link)
link%remove_nbor_list (nbors)
reset_status
check_support()
tlist%lock%set
do link in tlist
...
tlist%lock%unset
send_to_vnbors
check_nbor_nbors
for nbor
check_nbors (nbor%link) .
... .
check_ready .
check_ready (link) |
tlist%lock%unset -|
remove_patch
check_support(tlist,link)
task%dnload
download_link
link%lock%set
link%copy_nbor_list (nbors)
link%increment_needed (nbors)
link%lock%unset
do
source%lock%set
same
different
source%lock%unset
end do
link%decrement_needed (nbors)
link%remove_nbor_list (nbors)
task%update
task%rotate
task%info
send_to_vnbors
check_nbors
link%lock%set
copy_nbor_list (... nbors)
increment_needed (nbors)
link%lock%unset
for nbor ..
check_ready (nbor%link)
link%lock%set
do .. nbor
..
link%lock%unset
queue_by_time (link)
tlist%lock%set
task%has_finished