看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
elements: 看不懂問題一…問題二:在func1結尾的地方呼叫func2 05/25 16:51
問題2 算是我實際遇到的問題 只是將其簡化 限制 不能在func1的結尾 呼叫func2 有辦法解決問題2嗎? ※ 編輯: x246libra (61.220.35.157), 05/25/2018 16:57:40
elements: 你沒有辦法把一個函數塞到thread裡面,除非叫他自己去 05/25 17:03
elements: 抓。所以要不就是把func1和2一起包成三 不然就是做even 05/25 17:03
elements: t queue,或簡單一點用個判斷式或function pointer 05/25 17:03
elements: 第一個問題用個cond variable吧 05/25 17:08
stupid0319: 把func2剪下貼上到thread的func1之後 05/26 00:41
megawalker: 樓上正解XD 05/26 01:46
waiting1102: https://pastebin.com/2NXJZcLG 05/27 11:21