JezK
Edit File: internal_replace-i.ri
U:RDoc::AnyMethod[iI"internal_replace:EFI"GConcurrent::Collection::AtomicReferenceMapBackend#internal_replace;FF:privateo:RDoc::Markup::Document:@parts[ o:RDoc::Markup::Paragraph; [I"8Internal versions of the insertion methods, each a ;TI"5little more complicated than the last. All have ;TI"the same basic structure:;To:RDoc::Markup::Verbatim; [ I"'1. If table uninitialized, create ;TI"*2. If bin empty, try to CAS new node ;TI"$3. If bin stale, use new table ;TI"<4. Lock and validate; if valid, scan and add or update ;T:@format0o; ; [I"CThe others interweave other checks and/or alternative actions:;To;; [I"K* Plain +get_and_set+ checks for and performs resize after insertion. ;TI"M* compute_if_absent prescans for mapping without lock (and fails to add ;TI"K if present), which also makes pre-emptive resize checks worthwhile. ;T;0o; ; [I"DSomeday when details settle down a bit more, it might be worth ;TI"%some factoring to reduce sprawl.;T: @fileI"Blib/concurrent/collection/map/atomic_reference_map_backend.rb;T:0@omit_headings_from_table_of_contents_below000[ I"-(key, expected_old_value = NULL, &block);T@"FI"AtomicReferenceMapBackend;FcRDoc::NormalClass00