main: starting worker threads main: try_take... main: try_take - would block (possibly empty) main: put 1... main: put 1 main: put 2... main: put 2 main: put 3... main: put 3 main: put 4... main: put 4 main: put 5... main: put 5 main: put 6... main: put 6 main: put 7... main: put 7 main: put 8... main: put 8 main: put 9... main: put 9 main: closing channel... main: closed channel main: waiting for worker threads to exit main: workers exited main: put 999... main: put 999 - channel closed main: closing channel... main: closed channel main: closing channel... main: closed channel outputs (a) = [1, 4, 9, 16, 25, 36, 49, 64, 81] outputs (b) = []