在golang中,等待函数完成是一个常见的编程需求。无论是等待一个goroutine完成,还是等待一个channel中的数据到达,都需要合适的等待方式来处理。在这篇文章中,我们将向您介绍一些在golang中等待函数完成的方法和技巧。无论您是初学者还是有经验的开发者,本文都将为您提供有用的指导和示例代码,帮助您更好地处理等待函数完成的场景。让我们一起来深入了解吧!
问题内容
我在 golang 中有以下代码:
func A(){ go print("hello")}func main() { A() // here I want to wait for the print to happen B()}
登录后复制
如何确保 b() 仅在打印发生后才执行?
解决方法
使用sync.mutex
立即学习“go语言免费学习笔记(深入)”;
var l sync.mutexfunc a() { go func() { print("hello") l.unlock() }()}func b() { print("world")}func testlock(t *testing.t) { l.lock() a() l.lock() // here i want to wait for the print to happen b() l.unlock()}
登录后复制
使用sync.waitgroup
var wg sync.waitgroupfunc a() { go func() { print("hello") wg.done() }()}func b() { print("world")}func testlock(t *testing.t) { wg.add(1) a() wg.wait() // here i want to wait for the print to happen b()}
登录后复制
使用chan
func A() chan struct{} { c := make(chan struct{}) go func() { print("hello") c
登录后复制
以上就是在 golang 中等待函数完成的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2483644.html