Re:A lot of complex “scalable” systems can be done with a si...
by berkut on Sunday December 29, 2019 @10:20PM
(#21910551)
std::shared_ptr uses CAS atomics, which in heavy multithreaded code (multiple threads operating on the same pointers), can have surprising overhead in some situations.
[ Parent
| on HN ]
Re:A lot of complex “scalable” systems can be done with a si...
by usrnm on Monday December 30, 2019 @01:06AM
(#21911184)
On the other hand, not using atomics in heavy multithreaded code is just a recipe for disaster. The problem with shared_ptr is the fact that it uses atomics even in single-threaded code, which is obviously an overkill.
Re:A lot of complex “scalable” systems can be done with a si...
by jcelerier on Monday December 30, 2019 @03:07AM
(#21911626)
> The problem with shared_ptr is the fact that it uses atomics even in single-threaded code, which is obviously an overkill.
On the other hand imagine the security issues if shared_ptr was not thread-safe - you could just not reliably destroy a shared_ptr in any thread.
If you really know that you're going to get a graph of shared_ptr that do not move of a single thread, you can use boost::local_shared_ptr explicitely.
Re:A lot of complex “scalable” systems can be done with a si...
by masklinn on Monday December 30, 2019 @04:11AM
(#21911968)
One of the advantages of rust is its ability to segregate safe-to-share (between concurrent contexts) and not so, at compile time.
While it can’t (yet?) be generic over them, it lets you use the non-atomic Rc in thread-bound structures and know this is never going to be shared between threads, whereas the more expensive Arc can have handles be moved from one thread to an other.
Re:A lot of complex “scalable” systems can be done with a si...
by safercplusplus on Monday December 30, 2019 @05:59AM
(#21912501)
Counterparts for Rc [1] and Arc [2] (and compiler enforcement of their safe use [3]) are available in C++, though not standard.
[1] https://github.com/duneroadrunner/SaferCPlusPlus#reference-c...
[2] https://github.com/duneroadrunner/SaferCPlusPlus#tasyncshare...