{
  "id": "bbg-p0280-concurrency-runtime-and-scheduling-concurrency",
  "title": "Concurrency Versus Parallelism",
  "chapter": "concurrency-runtime-and-scheduling",
  "batch": "29",
  "rank": 286,
  "sourcePage": 280,
  "sourcePointer": "p. 280",
  "status": "accepted",
  "reviewerStatus": "reviewed",
  "fidelityScore": 0.9,
  "canvas": {
    "width": 960,
    "height": 640
  },
  "fireworksTechGraph": {
    "style": "style-1-flat-icon",
    "diagramType": "comparison",
    "topologyNotes": [
      "source page render inspected",
      "extracted page text inspected",
      "source page render inspected",
      "preserve comparison: concurrency interleaves tasks on one core through context switches, parallelism runs subtasks at the same time across multiple cores, concurrency can enable parallel execution",
      "omit source branding and decorative CPU icons"
    ],
    "publicBoundary": [
      "original vector output",
      "no source pixels",
      "no source mark or long wording"
    ]
  },
  "callouts": [],
  "sourceReview": {
    "conceptAnchors": [
      "concept: concurrency overlap",
      "concept: single core context switching",
      "concept: parallel execution",
      "concept: multiple CPU cores",
      "concept: concurrency enables parallelism"
    ],
    "labelSource": "curated",
    "semanticStatus": "reviewed"
  },
  "groups": [
    {
      "id": "concurrent",
      "label": "Concurrency",
      "x": 58,
      "y": 126,
      "w": 842,
      "h": 116
    },
    {
      "id": "parallel",
      "label": "Parallelism",
      "x": 58,
      "y": 292,
      "w": 842,
      "h": 132
    },
    {
      "id": "combined",
      "label": "Concurrency enabling parallel work",
      "x": 58,
      "y": 474,
      "w": 842,
      "h": 74
    }
  ],
  "shapes": [
    {
      "id": "core1",
      "kind": "rect",
      "label": "Core 1",
      "detail": "context switch",
      "x": 100,
      "y": 164,
      "w": 100,
      "h": 46,
      "tone": "blue"
    },
    {
      "id": "taskA",
      "kind": "queue",
      "label": "Task A",
      "detail": "resume pause",
      "x": 260,
      "y": 166,
      "w": 126,
      "h": 42,
      "tone": "purple"
    },
    {
      "id": "taskB",
      "kind": "queue",
      "label": "Task B",
      "detail": "resume pause",
      "x": 456,
      "y": 166,
      "w": 126,
      "h": 42,
      "tone": "red"
    },
    {
      "id": "taskC",
      "kind": "queue",
      "label": "Task C",
      "detail": "resume pause",
      "x": 652,
      "y": 166,
      "w": 126,
      "h": 42,
      "tone": "purple"
    },
    {
      "id": "pcore1",
      "kind": "rect",
      "label": "Core 1",
      "detail": "subtask 1",
      "x": 116,
      "y": 340,
      "w": 112,
      "h": 50,
      "tone": "green"
    },
    {
      "id": "pcore2",
      "kind": "rect",
      "label": "Core 2",
      "detail": "subtask 2",
      "x": 382,
      "y": 340,
      "w": 112,
      "h": 50,
      "tone": "teal"
    },
    {
      "id": "pcore3",
      "kind": "rect",
      "label": "Core 3",
      "detail": "subtask 3",
      "x": 648,
      "y": 340,
      "w": 112,
      "h": 50,
      "tone": "orange"
    },
    {
      "id": "threads",
      "kind": "queue",
      "label": "Threads",
      "detail": "scheduled work",
      "x": 380,
      "y": 490,
      "w": 150,
      "h": 44,
      "tone": "purple"
    }
  ],
  "connectors": [
    {
      "from": "core1",
      "to": "taskA",
      "label": "run",
      "flow": "main"
    },
    {
      "from": "taskA",
      "to": "taskB",
      "label": "switch",
      "flow": "control"
    },
    {
      "from": "taskB",
      "to": "taskC",
      "label": "switch",
      "flow": "control"
    },
    {
      "from": "pcore1",
      "to": "pcore2",
      "label": "same time",
      "flow": "data"
    },
    {
      "from": "pcore2",
      "to": "pcore3",
      "label": "same time",
      "flow": "data"
    },
    {
      "from": "threads",
      "to": "pcore1",
      "label": "schedule",
      "flow": "async"
    },
    {
      "from": "threads",
      "to": "pcore3",
      "label": "schedule",
      "flow": "async"
    }
  ]
}
