tobbebex
https://learn.microsoft.com/en-us/archive/msdn-magazine/2019...
We needed to log that kind of data during development and just tagging what messages were sensitive would have been too error prone, so we couldnt reliably have any logs once we went live.
We did however have a special crash handler that logged the exception type and callstack, but not even the exception message could touch the harddrive.
We had been trying for weeks without result, both with trainer wheels and to run behind with an attached handle. Then one day we unmounted the pedals and lowered the seat... after just an afternoon we could reattach the pedals and he was now cycling on his own!
In Sweden parents get 480 in total together, of which 390 are at 80% (capped at 989 SEK = 138 USD / day), and 90 days are at a minimum level (180 SEK = 25 USD). Out of the 480 days, 90 are reserved to each parent (used to be 60 before 2016) and the non-pregnant parent (usually a father) gets extra 10 days at the birth.
With a mutex you can lock for an entire ”transaction” where you fetch a unique index and write your value to the queue. With just atomics you can get a unique index into the queue concurrently with other threads, sure, but how do you mark it as ready to be unqueued once you are done writing your data?
Thats where lock free data structures come into play. They have solved this intricate synchronization between multiple atomics so you don’t have to.
For us the DVI bandwidth was the limiting factor to deliver 40-50 views at reasonable framerates (besides raw GPU computing power), so our display actually had 8(!) DVI inputs. That also gave us a natural interface to add distributed rendering, supporting up to 8 GPUs for rendering. In most cases though, one monster PC with 3 GPUs and 5 DVIs was enough to produce interactive framerates.