上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 17 下一页
摘要: go 的semophor机制,不是内核态的semephor,而是模拟futex,为其他同步原语提供一个sleep和wakeup机制。 因此他们总是成对出现的。 疑问,在使用mutex时,最后信号量唤醒时有个handoff参数,是有什么作用呢? 阅读全文
posted @ 2021-09-16 09:39 影随风动91 阅读(16) 评论(0) 推荐(0)
摘要: 常见的等待通知机制:请实现一个限定容量的队列(queue),当队列满或者空的时候,利用等待 / 通知机制实现阻塞或者唤醒。。 在 Go 中,也可以实现一个类似的限定容量的队列,而且实现起来也比较简单,只要用条件变量(Cond)并发原语就可以。Cond 并发原语相对来说不是那么常用,但是在特定的场景使 阅读全文
posted @ 2021-09-16 09:37 影随风动91 阅读(39) 评论(0) 推荐(0)
摘要: 内存模型:Go如何保证并发读写的顺序? Go 官方文档里专门介绍了 Go 的内存模型,你不要误解这里的内存模型的含义,它并不是指 Go 对象的内存分配、内存回收和内存整理的规范,它描述的是并发环境中多 goroutine 读相同变量的时候,变量的可见性条件。 具体点说,就是指,在什么条件下,goro 阅读全文
posted @ 2021-09-16 09:33 影随风动91 阅读(82) 评论(0) 推荐(0)
摘要: Once 可以用来执行且仅仅执行一次动作,常常用于单例对象的初始化场景。 (什么是单例对象?) 初始化单例资源有很多方法,比如定义 package 级别的变量,这样程序在启动的时候就可以初始化: package abc import time var startTime = time.Now() 或 阅读全文
posted @ 2021-09-15 10:47 影随风动91 阅读(40) 评论(0) 推荐(0)
摘要: WaitGroup解决的是并发-等待问题:有一个goroutine A在检查点等待一组goroutine 的完成, 如果任务组还没有全部完成,则goroutine A阻塞在检查点,知道任务组goroutine全部完成。 很多操作系统提供了类似的原语,如Linux的Barrier、Pthread(PO 阅读全文
posted @ 2021-09-14 18:36 影随风动91 阅读(29) 评论(0) 推荐(0)
摘要: package myrwmutex import ( "sync/atomic" "sync" ) // go实现的读写锁是写优先,即有写时,会先等待已有的读锁释放,在此写之后的读写操作都必须等此写操作完成 // 而另一种读优先,是指写到达时,之后又有读到达,则如果此时之前的读仍持有锁,则允许继续读 阅读全文
posted @ 2021-09-14 14:57 影随风动91 阅读(72) 评论(0) 推荐(0)
摘要: 参考链接: [linux futex浅析] https://developer.aliyun.com/article/6043?spm=a2c6h.13262185.0.0.575c4070sPb94F [Linux Futex的设计与实现] https://blog.csdn.net/jianch 阅读全文
posted @ 2021-09-10 15:51 影随风动91 阅读(113) 评论(0) 推荐(0)
摘要: 使用Mutex锁时常见错误: 非成对出现copy某个有状态的Mutex锁的重入死锁 如下为一个错误的重入锁的使用案例: func foo(l sync.Locker) { fmt.Println("in foo") l.Lock() bar(l) l.Unlock() } func bar(l sy 阅读全文
posted @ 2021-09-10 11:27 影随风动91 阅读(56) 评论(0) 推荐(0)
摘要: 同时运行的进程要访问共享资源,此共享资源某一时刻只允许某个进程访问,其他进程需要等待,就称为进程间的互斥,操作此共享资源的代码片段称为临界去。 临界的访问要遵循四个原则: 如果没有进程在临界区,则想要进入临界区的进行可以直接进入。如果某个进行在临界区,另外想进入临界去的进程需要等待。正在临界区外的进 阅读全文
posted @ 2021-09-10 10:22 影随风动91 阅读(106) 评论(0) 推荐(0)
摘要: atomic 操作的对象是一个地址,你需要把可寻址的变量的地址作为参数传递给方法,而不是把变量的值传递给方法。 提供的方法有: Add func AddInt32(addr *int32, delta int32) (new int32) 给一个地址上的内容加上值,返回新的值 CAS func Co 阅读全文
posted @ 2021-09-09 18:28 影随风动91 阅读(47) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 17 下一页