【发布时间】:2019-02-05 18:26:48
【问题描述】:
我是 Go 新手,我想实现一种自定义互斥机制,每个应用程序用户一次可以执行一个 goroutine。 为简化起见,将 U1 和 U2 视为应用程序用户,以及 F1(userId)、F2(userId) 和 F3(userId) 三个不同的 goroutine,它们从数据库中读取/写入仅与给定用户相关的记录强>。我希望这样,如果 U1 调用 (F1, F2, F3), (F2, F3) 直到 F1 结束才执行,则执行 F2 或 F3 (按调用顺序将是最佳解决方案),最后是剩余的被执行。 U2 不受 U1 锁的影响,但如前所述,她由自己的锁控制。你将如何实现这一点?有内置的原语吗?谢谢
【问题讨论】:
-
通道是唯一的同步primitive,但是stdlib中有互斥锁:golang.org/pkg/sync
标签: go concurrency synchronization locking mutex