5 ms·
From https://wg21.link/p2544 https://wg21.link/p2544 > The root cause is that the unwinder grabs a global mutex to protect the unwinding tables from concurrent
by dataflow 2y ago
From https://wg21.link/p2544 https://wg21.link/p2544
> The root cause is that the unwinder grabs a global mutex to protect the unwinding tables from concurrent changes from shared libraries.
> We did a prototype implementation where we changed the gcc exception logic to register all unwinding tables in a b-tree with optimistic lock coupling.
Did they try just stripping synchronization altogether to see what the performance ceiling would be?
- liontwist 2y agoWhy not? That’s a good indicator of how much it’s costing, In the late 90s/early 2000s when languages started promoting general purpose threading, they did so without planning and simply threw locks on everything. Everyone now pays the cost of that feature whether you use it or not. Is throwing and catching exceptions across threads a good idea?
- surajrmal 2y ago+1 there is so much unnecessary synchronization in things. It's crazy how much cost we pay for unnecessary locking in single threaded applications. Even multi threaded applications can end up scaling poorly. There are better ways to achieve partitioning of state that scales better than to simply litter granular locks everywhere.