最新 最热

golang channel 实现连接池

golang的channel除了goroutine通信之外还有很多其他的功能,本文将实现一种基于channel的通用连接池。

2022-08-02
1

使用带缓冲区的 channel 控制 goroutine 协程的并发量

func cc() { c := make(chan struct{}, 2) // 带缓冲区的channel var wg sync.WaitGroup wg.Add(10) for i := 0; i < 10; i++ { go func(i int) { d...

2021-09-23
1

聊聊golang的panic与recover

序本文主要研究一下golang的panic与recoverpanic与recoverrecover在如下三种情况下返回nilpanic参数为nilgoroutine没有发生panicrecover不是在defer func中调用实例实例1var fc func() stringfunc prote......

2020-12-11
1

Go socket编程

服务端处理流程:监听端口接节奏客户端连接创建goroutine,处理该连接客户端处理流程:建立与服务端的连接进行数据收发关闭连接----端口的话尽量选用8000以上的端口避免使用1024以下的的端口(系统使用)...

2020-06-23
1

Go语言之RWMutex

读写锁:是计算机程序的并发控制的一种同步机制,也称“共享-互斥锁”、多读者-单写者锁。读操作可并发重入,写操作是互斥的。

2020-04-02
1

[Go] Go的WaitGroup计数信号量

WaitGroup是一个计数信号量,可以用来记录并维护运行的goroutine,如果WaitGroup的值大于0,Wait方法就会阻塞

2019-09-10
1

[Go] golang互斥锁mutex

1.互斥锁用于在代码上创建一个临界区,保证同一时间只有一个goroutine可以执行这个临界区代码2.Lock()和Unlock()定义临界区

2019-09-10
2

[Go] golang原子函数锁住共享资源

1.atomic包里的几个函数以及sync包里的mutex类型,提供了解决方案2.原子函数能够以很底层的加锁机制来同步访问整型变量和指针3.atomic.AddInt64(&counter, 1)的原理是强制同一时刻只能有一个goroutine运行并完成这个...

2019-09-10
1