go语言多线程怎样实现
在Go语言中,可使用goroutine来实现多线程。goroutine是Go语言中的轻量级线程,可以同时运行在一个操作系统线程上。
要创建一个goroutine,只需要在函数调用前加上关键字go便可,例如:
func main() {
go func1() // 创建goroutine并履行函数func1()
go func2() // 创建goroutine并履行函数func2()
// 等待所有goroutine履行终了
time.Sleep(time.Second)
}
func func1() {
// 第一个goroutine的逻辑代码
}
func func2() {
// 第二个goroutine的逻辑代码
}
在上面的例子中,我们在main函数中创建了两个goroutine,并分别履行了函数func1()和func2()。由于goroutine是并发履行的,所以这两个函数可以同时运行。
如果需要等待所有的goroutine履行终了,可使用time包中的Sleep函数进行等待。在上面的例子中,我们等待了1秒钟,使得主线程等待两个goroutine履行终了后再退出。
需要注意的是,每一个goroutine都运行在相同的地址空间,因此它们可以直接访问共享的变量。为了不多个goroutine对共享变量的并发访问致使的竞态条件问题,可使用Go语言提供的互斥锁(sync.Mutex)等机制进行同步操作。
TOP