[libcxx-commits] [PATCH] D67086: Implement syncstream (p0053)

Marshall Clow via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Dec 15 07:32:31 PST 2020

mclow.lists added inline comments.

Comment at: libcxx/include/syncstream:220
+    mutex_ptr_type __mtx = __mtx_ptr_map[__obuf];
zoecarver wrote:
> zoecarver wrote:
> > mclow.lists wrote:
> > > How do entries get removed from `__mtx_ptr_map`?
> > > 
> > They don't. I don't think there is any way to say "will any threads ever need to access this streambuf again?" 
> > 
> > If there was a way to only keep the streambuf in the static map while the object is active, I would be open to that. But, I am hesitant to do that because I want to keep the read/writes to the map as low as possible. 
> > 
> > What would you suggest? 
> Given the "new" structure of `__mtx_ptr_map`, I think I can add a function to remove elements from the map safely. Would this be a good thing to add (the only reason it might not is for performance but, I think stale memory outweighs performance here)?
You could store a count, like shared_ptr does.  How many sync streams are using this streambuf?

Increment the count on construction, decrement on destruction, remove at zero.

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list