Go并发

大型程序被分割成较小的子程序。同时运行其较小组件的程序称为并发。

Goroutines

以并发方式运行的应用程序部分称为goroutines。Goroutines和通道用于结构化并发程序。 进程是在内存中以自己的地址空间运行的独立执行实体。一个进程拥有同时执行的线程。线程共享进程的地址空间。

Goroutines是轻量级的,比线程轻得多。Goroutines在相同的地址空间中运行,因此对共享内存的访问必须进行同步;可以使用sync包来实现,但建议使用通道来同步goroutines。

Goroutine以函数或方法的形式实现。可以使用"go"关键字调用(调用)它。当goroutine完成时,不会返回任何内容给调用函数。

Go并发示例

package main  
import (  
   "fmt"  
   "time"  
   "sync"  
)  
var wg = sync.WaitGroup{}  
  
func main() {  
   wg.Add(2)  
   go fun1()  
   go fun2()  
   wg.Wait()  
}  
func fun1(){  
   for  i:=0;i<10;i++{  
      fmt.Println("fun1,  ->",i)  
      time.Sleep(time.Duration(5*time.Millisecond))  
   }  
   wg.Done()  
}  
func fun2(){  
   for i:=0;i<10;i++{  
      fmt.Println("fun2,  ->",i)  
      time.Sleep(time.Duration(10*time.Millisecond))  
   }  
   wg.Done()  
}  

输出:

fun2,  -> 0
fun1,  -> 0
fun1,  -> 1
fun2,  -> 1
fun1,  -> 2
fun1,  -> 3
fun2,  -> 2
fun1,  -> 4
fun1,  -> 5
fun2,  -> 3
fun1,  -> 6
fun1,  -> 7
fun2,  -> 4
fun1,  -> 8
fun1,  -> 9
fun2,  -> 5
fun2,  -> 6
fun2,  -> 7
fun2,  -> 8
fun2,  -> 9

标签: Golang, Golang下载, Golang教程, Golang技术, Golang学习, Golang学习教程, Golang语言, Golang开发, Golang入门教程, Golang进阶教程, Golang高级教程, Golang面试题, Golang笔试题, Golang编程思想