gin go并发案例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gin go并发案例相关的知识,希望对你有一定的参考价值。
参考技术A 通过管道进行处理机制package main
import (
"fmt"
"github.com/gin-gonic/gin"
"io/ioutil"
"os"
"strconv"
)
var sema = make(chan struct,1)
func main()
r := gin.Default()
r.GET("/ping",func(c *gin.Context)
c.JSON(200, gin.H
"message":"pong",
)
)
r.GET("/test",func(context *gin.Context)
file2, _ := os.OpenFile("./3.txt", os.O_RDWR|os.O_APPEND,0766)
defer file2.Close()
file2.WriteString("11\r\n");
quUser()
getU()
context.JSON(200, gin.H
"message":"test",
)
)
r.Run(":3300")// listen and serve on 0.0.0.0:8080
func quUser() int
sema <-struct
data, err := ioutil.ReadFile("./2.txt")
if err != nil
balance, _ := strconv.Atoi(string(data))
balance = balance+1
fmt.Println(balance,"存余额\r\n")
file, _ := os.OpenFile("./2.txt", os.O_RDWR,0766)
defer file.Close()
file.WriteString(strconv.Itoa(balance));
<-sema
return balance
func getU()
sema <-struct
data, err := ioutil.ReadFile("./2.txt")
if err != nil
balance, _ := strconv.Atoi(string(data))
fmt.Println(balance,"取余额\r\n")
<-sema
Go语言协程并发---条件变量案例《城管来啦》
package main import ( "fmt" "sync" "time" ) /* 城管预警 ·监听城管大队 ·烧烤摊集群:监听城管大队,只要出动就发消息通知工会主席并进入阻塞等待至被唤醒,否则就提供露天烧烤 ·公关专员:摆平城管大队,并广播通知所有烧烤摊主 */ func main() { var dangerous = false cond := sync.NewCond(&sync.Mutex{}) chDanger := make(chan string, 1) for i := 1; i <= 3; i++ { go func(index int) { for true { //只要城管出来,就等待起来 cond.L.Lock() for dangerous==true{ //发送预警 select { case chDanger <- "城管来了!!": fmt.Println("城管来了!") fmt.Println(index,":蛰伏状态") default: //已经有人发过了 } cond.Wait() } cond.L.Unlock() //城管没出来 fmt.Println(index,":提供露天烧烤") time.Sleep(3*time.Second) } }(i) } go func() { for true { select { case <-chDanger: //帮大家平事儿 cond.L.Lock() time.Sleep(3*time.Second) dangerous=false fmt.Println("事情已经摆平") cond.Broadcast() cond.L.Unlock() default: //日常生活 fmt.Println("工会主席的日常幸福生活") dangerous=true time.Sleep(3*time.Second) } } }() time.Sleep(365*time.Second) }
以上是关于gin go并发案例的主要内容,如果未能解决你的问题,请参考以下文章