[問題] thread運作

作者: x246libra (楓)   2018-05-25 16:46:10
開發平台(Platform): (Ex: Win10, Linux, ...)
win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
gcc
問題(Question):
問題1.
func1在另外創造的thread執行
func2在main執行
不使用pthread_join等待
問題2.
如果想要將func2也丟到 與 func1同樣的thread應該怎麼做?
而且要func1執行完 才執行func2
預期的正確結果(Expected Output):
問題1.
func1 輸出 1~10
func2 輸出 a~j
預期輸出每次都會不太一樣
1~10 a~j 可能混合在一起 可能依序排列
但最後一個輸出 一定為 j
問題2.
想不到怎麼做
請教有什麼作法
錯誤結果(Wrong Output):
問題1.
最後一個輸出 不一定為j
func2一定可以執行完成
疑問是 func2 執行結束
main的thread應該也結束了
為什麼j都輸出了 func1還是會跑?
既然會跑 為什麼 不會輸出到10?
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://pastebin.com/ixYbTdjZ
作者: elements (Helianthus annuns)   2018-05-25 16:51:00
看不懂問題一…問題二:在func1結尾的地方呼叫func2你沒有辦法把一個函數塞到thread裡面,除非叫他自己去抓。所以要不就是把func1和2一起包成三 不然就是做event queue,或簡單一點用個判斷式或function pointer第一個問題用個cond variable吧
作者: stupid0319 (徵女友)   2018-05-26 00:41:00
把func2剪下貼上到thread的func1之後
作者: megawalker (小智貓)   2018-05-26 01:46:00
樓上正解XD
作者: waiting1102 (夜不眠)   2018-05-27 11:21:00

Links booklink

Contact Us: admin [ a t ] ucptt.com