• @[email protected]
    link
    fedilink
    4320 days ago

    Your graph also cuts out early. Eventually you want to get performance gains with multi-threading and concurrency, and then the line drops all the way into hell.

    • @xmunk
      link
      1720 days ago

      Good Afternoon Sir, have you heard about our lord and savior pthreads?

      • @[email protected]
        link
        fedilink
        27
        edit-2
        20 days ago

        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.

        • @[email protected]
          link
          fedilink
          720 days ago

          That’s the problem of most general-use languages out there, including “safe” ones like Java or Go. They all require manual synchronization for shared mutable state.

          • @[email protected]
            link
            fedilink
            20
            edit-2
            20 days ago

            There’s a difference between “You have to decide when to synchronize your state” and “If you make any very small mistake that appears to be perfectly fine in the absence of extremely rigorous scrutiny then this code block will cause a crash or some other incomprehensible undefined behavior 1/10000 times that it gets run, leaving you with no indication of what went wrong or where the problem is.”

        • @[email protected]
          link
          fedilink
          420 days ago

          that’s so inefficient they’d probably get performance gains by switching to Python.

          Damn, this goes hard for no reason.

        • @[email protected]
          link
          fedilink
          120 days ago

          Well, threadsanitizer catches them in runtime. Not sure about GCC static analyser and other SA tools.

          • @[email protected]
            link
            fedilink
            3
            edit-2
            19 days ago

            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.

            • @[email protected]
              link
              fedilink
              119 days ago

              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.

        • @xmunk
          link
          319 days ago

          So… I’m old. All my time working in C++ was pre-C++11