this post was submitted on 08 Jun 2024
1068 points (98.5% liked)
Programmer Humor
19564 readers
635 users here now
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Good Afternoon Sir, have you heard about our lord and savior pthreads?
I'm not saying you can't do multi-threading or concurrency in C++. The problem is that it's far too easy to get data races or deadlocks by making subtle syntactical mistakes that the compiler doesn't catch. pthreads does nothing to help with that.
If you don't need to share any data across threads then sure, everything is easy, but I've never seen such a simple use case in my entire professional career.
All these people talking about "C++ is easy, just don't use pointers!" must be writing the easiest applications of all time and also producing code that's so inefficient they'd probably get performance gains by switching to Python.
Well, threadsanitizer catches them in runtime. Not sure about GCC static analyser and other SA tools.
I use thread sanitizer and address sanitizer in my CI, and they have certainly helped in some cases, but they don't catch everything. In fact it's the cases that they miss which are by far the most subtle instances of undefined behavior of all.
They also slow down execution so severely that I can't use them when trying to recreate issues that occur in production.
They caught lock inversion, that helped to fix obscure hangs, that I couldn't reproduce on my machine, but were constantly happening on machine with more cores.