国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Golang與python線程詳解及簡單實例

2019-11-25 16:13:19
字體:
來源:轉載
供稿:網友

Golang與python線程詳解及簡單實例

在GO中,開啟15個線程,每個線程把全局變量遍歷增加100000次,因此預測結果是 15*100000=1500000.

var sum intvar cccc intvar m *sync.Mutexfunc Count1(i int, ch chan int) {  for j := 0; j < 100000; j++ {   cccc = cccc + 1  }  ch <- cccc}func main() {  m = new(sync.Mutex)  ch := make(chan int, 15)  for i := 0; i < 15; i++ {   go Count1(i, ch)  }  for i := 0; i < 15; i++ {   select {   case msg := <-ch:     fmt.Println(msg)   }  }}

但是最終的結果,406527

說明需要加鎖。

func Count1(i int, ch chan int) {  m.Lock()  for j := 0; j < 100000; j++ {   cccc = cccc + 1  }  ch <- cccc  m.Unlock()}

最終輸出:1500000

python中:同樣方式實現,也不行。

count = 0def sumCount(temp):  global count  for i in range(temp):    count = count + 1li = []for i in range(15):  th = threading.Thread(target=sumCount, args=(1000000,))  th.start()  li.append(th)for i in li:  i.join()print(count)

輸出結果:3004737

說明也需要加鎖:

mutex = threading.Lock()count = 0def sumCount(temp):  global count  mutex.acquire()  for i in range(temp):    count = count + 1  mutex.release()li = []for i in range(15):  th = threading.Thread(target=sumCount, args=(1000000,))  th.start()  li.append(th)for i in li:  i.join()print(count)

輸出1500000

OK,加鎖的小列子。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景谷| 连江县| 淮北市| 方正县| 大英县| 韶山市| 灵石县| 宾阳县| 绍兴市| 阿拉善左旗| 绥中县| 光泽县| 张家港市| 大名县| 鄂托克旗| 兖州市| 叙永县| 汕头市| 七台河市| 繁峙县| 射洪县| 永康市| 磐安县| 内黄县| 开化县| 崇信县| 洪泽县| 嘉义县| 西林县| 景宁| 喀喇沁旗| 临清市| 仙桃市| 古蔺县| 获嘉县| 襄垣县| 栖霞市| 芦山县| 堆龙德庆县| 凤山县| 绿春县|