func createPipeline(
filename string,
fileSize, chunkCount int) <- chan int{
chunkSize := fileSize/chunkCount
sortResults := [] <-chan int{}
for i:= 0; i< chunkCount;i++{
file, err := os.Open(filename)//每循环一次就open一次file
if err != nil{
panic(err)
}
file.Seek(int64(i*chunkSize),0)
source := zzpipeline.ReaderSource(
bufio.NewReader(file), chunkSize)
sortResults = append(sortResults,
zzpipeline.InMemSort(source))
//此处在一次循环结束时,数据已经读出并保存在sortResults中了,
// 为什么后面紧接着file.Close()会导致整个数据都读不出来了呢?
file.Close() //close与open都在循环体内
}
return zzpipeline.MergeN(sortResults...)
}