• Zagorath
    link
    fedilink
    English
    arrow-up
    40
    arrow-down
    3
    ·
    2 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
      ·
      2 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
      ·
      2 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
      ·
      2 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
        link
        fedilink
        English
        arrow-up
        8
        ·
        2 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.