Skip to content

Commit

Permalink
Do not iterate over hash which might conflict with new pair addition
Browse files Browse the repository at this point in the history
  • Loading branch information
pitr-ch committed Aug 28, 2020
1 parent c1114a0 commit c4cbc96
Showing 1 changed file with 4 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,10 @@ def self.thread_local_finalizer(index)
# The cost of GC'ing a TLV is linear in the number of threads using TLVs
# But that is natural! More threads means more storage is used per TLV
# So naturally more CPU time is required to free more storage
THREAD_LOCAL_ARRAYS.each_value { |array| array[index] = nil }
#
# DO NOT use each_value which might conflict with new pair assignment
# into the hash in #value= method
THREAD_LOCAL_ARRAYS.values.each { |array| array[index] = nil }
# free index has to be published after the arrays are cleared
FREE.push(index)
end
Expand Down

0 comments on commit c4cbc96

Please sign in to comment.