• Zagorath@aussie.zone
      link
      fedilink
      English
      arrow-up
      40
      arrow-down
      3
      ·
      7 months ago

      Why comment here at all

      Because we’re programmers, and programmers are infamous for being rules-/logic-driven.

      If, as a comment below suggests, the joke is that it’s meant to be read in order 3, 1, 2, that violates the rule that race conditions typically don’t cause an entirely different program to produce the output. So if the joke is meant to be “lol we have a race condition”, bubbles should be mixed up for one person, not mixed between people.

      People don’t get the joke because the joke violates its own internal rules.

      • qqq@lemmy.world
        link
        fedilink
        arrow-up
        12
        arrow-down
        1
        ·
        7 months ago

        It doesn’t violate any rules… Imagine both the “speaker” and the “text” are being updated by separate threads. A program that would eventually display the behavior in this meme is simple, and I’m a bit embarrassed to have written it because of this comment:

        #include <pthread.h>
        #include <stdio.h>
        
        char* speakers[] = {
            "Alice",
            "Bob"
        };
        int speaker = 0;
        
        void* change_speaker(void* arg)
        {
            (void)arg;
        
            for (;;) {
                speaker = speaker == 0 ? 1 : 0;
            }
        }
        
        char* texts[] = {
            "Hi Bob",
            "Hi Alice, what's up?",
            "Not much Bob",
        };
        int text = 0;
        
        void* change_text(void* arg)
        {
            (void)arg;
            for (;;) {
                switch (text) {
                case 0:
                    text = 1;
                    break;
                case 1:
                    text = 2;
                    break;
                case 2:
                    text = 0;
                    break;
                }
            }
        }
        
        int main(int argc, char* argv[])
        {
            pthread_t speaker_swapper, text_swapper;
        
            pthread_create(&text_swapper, NULL, change_text, NULL);
            pthread_create(&speaker_swapper, NULL, change_speaker, NULL);
            for (int i = 0; i < 3; ++i) {
                printf("%s: %s\n", speakers[speaker], texts[text]);
            }
        }
        
      • CanadaPlus@lemmy.sdf.org
        link
        fedilink
        arrow-up
        2
        ·
        7 months ago

        Oh, I guess that makes sense. One person asks if the other is an expert, they reply they read the for dummies book, cue comically aggressive response.

        There’s so much going on in this exchange, including two separate jokes as well as weird multi-person race conditions, that I couldn’t reverse engineer it.

      • Zuberi 👀@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        3
        arrow-down
        4
        ·
        7 months ago

        I don’t see OP explaining it anywhere.

        It’s just threads running out of order.

        Why are you all overengineering the joke this much?

        • Zagorath@aussie.zone
          link
          fedilink
          English
          arrow-up
          8
          ·
          7 months ago

          Why are you all overengineering the joke this much?

          Because I’m literally an engineer?

          Honestly, this isn’t me artificially coming in and doing something weird. It’s just me trying to explain how my brain naturally interpreted it. It never occurred to me to include the left guy’s speech bubble in the race condition until I saw someone else’s comment explaining it.