[問題] thread運作

看板C_and_CPP (C/C++)作者 (宸火)時間7年前 (2018/05/25 16:46), 7年前編輯推噓3(305)
留言8則, 4人參與, 7年前最新討論串1/1
開發平台(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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.35.157 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1527237972.A.3F1.html

05/25 16:51, 7年前 , 1F
看不懂問題一…問題二:在func1結尾的地方呼叫func2
05/25 16:51, 1F
問題2 算是我實際遇到的問題 只是將其簡化 限制 不能在func1的結尾 呼叫func2 有辦法解決問題2嗎? ※ 編輯: x246libra (61.220.35.157), 05/25/2018 16:57:40

05/25 17:03, 7年前 , 2F
你沒有辦法把一個函數塞到thread裡面,除非叫他自己去
05/25 17:03, 2F

05/25 17:03, 7年前 , 3F
抓。所以要不就是把func1和2一起包成三 不然就是做even
05/25 17:03, 3F

05/25 17:03, 7年前 , 4F
t queue,或簡單一點用個判斷式或function pointer
05/25 17:03, 4F

05/25 17:08, 7年前 , 5F
第一個問題用個cond variable吧
05/25 17:08, 5F

05/26 00:41, 7年前 , 6F
把func2剪下貼上到thread的func1之後
05/26 00:41, 6F

05/26 01:46, 7年前 , 7F
樓上正解XD
05/26 01:46, 7F

05/27 11:21, 7年前 , 8F
文章代碼(AID): #1R1yrKFn (C_and_CPP)
文章代碼(AID): #1R1yrKFn (C_and_CPP)