go語言 並行程式 wordcount

2021-06-08 12:21:09 字數 1219 閱讀 9550

go在設計的時候,就有針對並行的語法 —-channel 和goroutine

前者 可以很方便的進行訊息和資料傳遞,在取資料和拿資料的時候可以不用關心底層實現,用  <- 進行賦值

這裡必須加time.sleep  不然程式很快就結束,read 和 write 甚至都來不及執行。這裡和linux 執行緒程式設計很像。現在還不知道有沒有更好的方式(貌似看到有人寫過 ,用某種方式通知main 結束)

package main

import (

"fmt"

"time"

"math/rand")

var ch chan int

func read() }

func write()}

func main()

———————————————————————————————————-

wordcount  **實現,知道hadoop的都應該知道這個,平行計算,那麼在go 裡面也很好實現:

main: readfile : 讀取檔案,進行任務分發 ,分發到三個相同的計算執行緒 ,只是通過不同的chan來 傳遞任務(這裡的任務就是統計一行字元的每個單詞出現的次數)

compute : 計算執行緒 ,將結果傳送到 乙個全域性的chan中

redeuce : 從全域性的chan 中取出結果,合併的最終的結果中 。

感覺自己寫的程式還不是很規範,思路很多都侷限於之前寫c的思路。這裡

package main /*

#include */

import (

"os"

"fmt"

"bufio"

"time"

"strings"

"c""runtime")

var str1 chan string

var str2 chan string

var str3 chan string

var keywordmap chan map[string]int

var result map[string]int

func wordcount(s string) map[string]int {

m:= make(map[string]int)

words:=strings.fields(s)

for i:=0;itips:

參考:go lang介紹

C語言並行程式程式設計(一)

include include include void hello void int main int argc,char ar void hello void 接著執行一下,先看一下結果 在原始檔的資料夾下開啟終端輸入 gcc g wall fopenmp o test test.c 得到乙個檔...

併發程式與並行程式

併發程式是指可以被同時發起執行的程式 並行程式被設計成可以在並行的硬體上執行的併發程式。併發程式代表了所有可以實現並發行為的程式,它是乙個寬泛的概念,其中包含了並行程式。inter process communication 程序間通訊 go支援的ipc方法有管道 訊號和socket.程序 我們把乙...

Java並行程式基礎

程序是計算機中的程式關於某資料集合上的一次運動活動,是系統進行資源分配的基礎單位。程序是執行緒的容器。程式是指令 資料及其組織形式的描述,程序是程式的實體。執行緒的所有狀態都在thread的state列舉中 public enum state t1.start 也可以使用runnable介面來實現相...