package main
import (
"context"
"fmt"
"sync"
"time"
)
/*
type DoOnePieceFunc func(piece int)
func MyFunction(ctx context.Context, workers, pieces int, doOnePiece DoOnePieceFunc)
该函数是提供给第三方的并发处理框架,其启动workers个协程并发处理用户的任务,
用户任务的数据被分为总共pieces份,数据被标号为0到pieces-1,doOnePiece是用户自定义的用于处理一份数据的方法,
其接收一个参数piece来指定数据的标号。MyFunction并发的执行用户任务,直到任务数据被全部处理完,
或者ctx出现停止信号(ctx.Done()),每个worker同时只能处理一份数据。
*/
type DoOnePieceFunc func(piece int)
func MyFunction(ctx context.Context, workers, pieces int, doOnePiece DoOnePieceFunc) {
chs := make(chan int