### 并行和并發
>并行,同一時刻,多條指令在多個處理器上同時執行
>并發,同一時刻只能執行一條指令,但是多個指令在這一條指令得基礎上交替執行。

### goroutine
>每一個并發執行單元叫做goroutine(協程),調用方法
> **go 函數名 (函數參數)**
>使用go關鍵詞就不能使用函數返回值來進行數據交換,只能使用channel(渠道)
```
package main
import (
"fmt"
"time"
)
// 創建子線程 Task1
func Task1() {
// for 循環間隔打印
for {
fmt.Println(time.Now().Format("15:04:05"), "正在處理子線程Task1任務")
// 間隔時間
time.Sleep(time.Second * 3)
}
}
// 創建子線程 Task2
func Task2() {
for {
fmt.Println(time.Now().Format("15:04:05"), "正在處理子線程Task2任務")
time.Sleep(time.Second * 1)
}
}
// 主線程
func main() {
// 執行兩個子線程
go Task1()
go Task2()
// 主線程任務
for {
fmt.Println(time.Now().Format("15:04:05"), "正在處理主線程任務")
time.Sleep(time.Second * 2)
}
}
```
```
15:36:51 正在處理主線程任務
15:36:51 正在處理子線程Task1任務
15:36:51 正在處理子線程Task2任務
15:36:52 正在處理子線程Task2任務
15:36:53 正在處理子線程Task2任務
...
```
main函數內需要有一些代碼邏輯,否則就會報錯,或者就是跳出程序。
創建10個線程,這里有點像python
```
package main
import (
"fmt"
"time"
)
func write(ints int) {
fmt.Println("寫", ints)
}
func main() {
for i := 0; i < 10; i++ {
go write(i)
}
time.Sleep(time.Second * 5)
}
```
### 使用匿名函數創建goroutine
```
go func(參數列表) {
函數體
} (調用參數列表 )
```
```
package main
import (
"fmt"
"time"
)
func main() {
go func() {
for {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"), "正在處理子線程任務1")
time.Sleep(time.Second * 3)
}
}()
go func() {
for {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"), "正在處理子線程任務2")
time.Sleep(time.Second * 1)
}
}()
time.Sleep(time.Second * 100)
}
```
- 安裝開發環境
- 安裝開發環境
- 安裝詳細教程
- 引入包
- Go語言基礎
- 基本變量與數據類型
- 變量
- 數據類型
- 指針
- 字符串
- 代碼總結
- 常量與運算符
- 常量
- 運算符
- 流程控制
- if判斷
- for循環
- switch分支
- goto跳轉
- 斐波那契數列
- Go語言內置容器
- 數組
- 切片
- 映射
- 函數
- 函數(上)
- 函數(中)
- 函數(下)
- 小節
- 包管理
- 結構體
- 結構體(上)
- 結構體(中)
- 結構體(下)
- 小節
- 錯誤處理
- 錯誤處理
- 宕機
- 錯誤應用
- 小節
- 文件操作
- 獲取目錄
- 創建和刪除目錄
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 處理JSON文件
- 接口與類型
- 接口的創建與實現
- 接口賦值
- 接口嵌入
- 空接口
- 類型斷言(1)
- 類型斷言(2)
- 小節
- 并發與通道
- goroutine協程
- runtime包
- 通道channel
- 單向通道channel
- select
- 線程同步
- 多線程的深入學習
- http編程
- http簡介
- Client和Request
- get請求
- post請求
- 模塊函數方法
- 模塊
- fmt庫,模塊
- 項目練習
- 爬蟲:高三網
- 爬蟲:快代理
- 爬蟲:快代理2
- 多線程:通道思路
- 多線程爬蟲:快代理