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介面來實現相...