)]}'
{
  "commit": "fd80eb99c8f653c847d294a001bdf2a3a6f768f5",
  "tree": "c8c31ae6a61f1327cdaa14f00685fb9708454466",
  "parents": [
    "8e0aa688b654ef28caa72506fa5ec8dba9fc7690"
  ],
  "author": {
    "name": "Bryan C. Mills",
    "email": "bcmills@google.com",
    "time": "Wed Nov 01 15:49:15 2017 -0400"
  },
  "committer": {
    "name": "Bryan Mills",
    "email": "bcmills@google.com",
    "time": "Wed Nov 01 21:47:15 2017 +0000"
  },
  "message": "semaphore: add worker-pool example\n\nI\u0027ve commented several times in various forums that basically every\ntime I\u0027ve seen the “worker goroutine” pattern in Go, there has turned\nout to be a cleaner implementation using semaphores.\n\nThis change adds a simple such example. (For more complex usage, I\nwould generally pair the semaphore with an errgroup.Group.)\n\nChange-Id: Ibf69ee761d14ba59c1acc6a2d595b4fcf0d8f6d6\nReviewed-on: https://go-review.googlesource.com/75170\nReviewed-by: Ross Light \u003clight@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5bb2fb3097f402d99a91e21047b5ce63d74ffb8f",
      "old_mode": 33188,
      "old_path": "semaphore/semaphore_bench_test.go",
      "new_id": "1e3ab75f5d9751d0c86145a3018e7b4ed136440e",
      "new_mode": 33188,
      "new_path": "semaphore/semaphore_bench_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e75cd79f5bc25d5632f3fec4d1187a4b9753175f",
      "new_mode": 33188,
      "new_path": "semaphore/semaphore_example_test.go"
    },
    {
      "type": "modify",
      "old_id": "3f3bc9f42d6ca3187389398d097f084966c6b683",
      "old_mode": 33188,
      "old_path": "semaphore/semaphore_test.go",
      "new_id": "2541b9068f3866eed77dc0bd58e8d76e2e8c3189",
      "new_mode": 33188,
      "new_path": "semaphore/semaphore_test.go"
    }
  ]
}
