[問題] linux中thread間的同步問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
LINUX G++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
pthread
問題(Question):
小弟最近在試thread程式
在thread間的同步遇到了一點問題
我寫了一個簡單的程式碼
內容很簡單
有一個thread數量大小的global array叫all_ok_or_not
thread內會有各自計步器step
當thread執行完自己的任務後
會各自把step++
然後到all_ok_or_not把自己id對應的那格填入step(代表我這條thread做完了)
接著一個while迴圈會去call函數check_all_ok
check_all_ok就是去檢查是否all_ok_or_not中大家都==step(大家做完了) 是回傳1 否則0
當大家都做完了 check_all_ok會回傳1 則每條thread都可以通過那個while繼續往下做
不過我這樣寫跑到一半就會停住(thread數>1時)
thread數1的時候是可以跑完的
請問哪邊有問題嗎?
麻煩各位給我一點意見
感謝
預期的正確結果(Expected Output):
應該要可以正常執行完
錯誤結果(Wrong Output):
跑到一半卡住 停了
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/bhwTml
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.16.164
推
12/18 13:50, , 1F
12/18 13:50, 1F
ok 已經改過了 不過還是會卡住囧
※ 編輯: ChineseKing 來自: 140.109.16.164 (12/18 14:15)
推
12/18 14:31, , 2F
12/18 14:31, 2F
→
12/18 14:32, , 3F
12/18 14:32, 3F
→
12/18 14:33, , 4F
12/18 14:33, 4F
推
12/18 14:38, , 5F
12/18 14:38, 5F
→
12/18 14:55, , 6F
12/18 14:55, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章