初级会员
  • 第 30503 位会员
  • buguang01
  • 2019-02-19 12:33:01
  • Offline
  • 25 33

最近分享的资源

最近发布的项目

    暂无

最近的评论

  • 在settings.json中 { "go.inferGopath": true, "go.toolsGopath": "你的环境变量中的GOPATH", "go.gopath": "${workspaceRoot}", } 你VSCODE中打开的目录下面应该有bin,pkg,src目录 这样就可以了
  • 因为主协程结束了。所以子协程没跑完就被关闭了 正确的做法应该是: wg :=make(sync.Waitgroup) func main{ wg.Add(2) go say("world") go say("hello") wg.Wait() } func say(s string){ //你的代码...后面加上这句 wg.Done() }
  • 已完成的子功能: loglogic 日志管理器 HTTPModule HTTP的收消息模块 WebSocket WebSocket收发消息模块 LogicModule 业务逻辑模块,用来管理业务协程,可以让业务逻辑在指定KEY的协程上运行 SqlDataModule 数据库处理模块,可以让DB操作在指定KEY的协程上运行,还可以设置延时运行 MemoryModule 内存数据管理器,可以用来管理,数据什么空闲多少时间后,进行卸载 event 收到的消息基础类型、module用到的一些信道数据结构 model mysql的模块、Redis的模块 threads 协程管理 util 通用基础模块(String、StringBuilder、TimeConvert、(WorkerID)SnowFlakeID、BaseData)
  • 去百度一个GO rpc的例子,你就知道怎么做了。
  • func main() { mutex := sync.Mutex{} wg := new(sync.WaitGroup) wg2 := new(sync.WaitGroup) food := []string{"西瓜", "巧克力", "蛋糕", "土司", "饼干"} wg.Add(1) wg2.Add(3) go func() { //协程a wg.Wait() mutex.Lock() food[0] = "哈密瓜" fmt.Println("协程A:我把西瓜换成了哈密瓜", food) mutex.Unlock() wg2.Done() }() go func() { //协程b wg.Wait() mutex.Lock() food[0] = "火龙果" fmt.Println("协程B:我把西瓜换成了火龙果", food) mutex.Unlock() wg2.Done() }() go func() { //协程c wg.Wait() mutex.Lock() food[0] = "榴莲" fmt.Println("协程C:我把西瓜换成了榴莲", food) mutex.Unlock() wg2.Done() }() wg.Done() wg2.Wait() }