== Quote from Steven Schveighoffer ([email protected])'s article > On Wed, 17 Nov 2010 12:09:11 -0500, dsimcha <[email protected]> wrote: > > == Quote from Steven Schveighoffer ([email protected])'s article > >> The issue is that if you append to such an array and it adds more pages > >> in > >> place, the block length location will move. Since each thread caches > >> its > >> own copy of the block info, one will be wrong and look at array data > >> thinking it's a length field. > >> Even if you surround the appends with a lock, it will still cause > >> problems > >> because of the cache. I'm not sure there's any way to reliably append > >> to > >> such data from multiple threads. > >> -Steve > > > > Would assumeSafeAppend() do the trick? > > > No, that does not affect your cache. I probably should add a function to > append without using the cache. > -Steve
How about using std.array.Appender? This looks safe as far as I can tell, but I want to make sure there aren't any obscure implementation details that would prevent this from working, too.
