6.824Lab1

官方源码阅读 main/mrsequential.go 先看它的loadPlugin函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 func loadPlugin(filename string) (func(string, string) []mr.KeyValue, func(string, []string) string) { p, err := plugin.Open(filename) if err != nil { log.Fatalf("cannot load plugin %v", filename) } xmapf, err := p.Lookup("Map") if err != nil { log.Fatalf("cannot find Map in %v", filename) } mapf := xmapf.(func(string, string) []mr.KeyValue) xreducef, err := p.Lookup("Reduce") if err != nil { log.Fatalf("cannot find Reduce in %v", filename) } reducef := xreducef.(func(string, []string) string) return mapf, reducef } 这个函数传入了一个.so常见文件的路径,返回了两个函数 ...

October 29, 2026 · 10 min