LONGEPASS
數位電子/程式語言/Q62
中等
正確率 -
Q62.

執行下列C++語言程式,其輸出結果為何?數位電子 甲級 程式語言 第 62 題 題目 圖片

數位電子 · 甲級 · 程式語言 · Q62

難易度分析

3 / 5

此題要求掌握執行緒建立與 join 的基礎流程,並推斷正確的輸出順序,屬於中等難度。

正確答案:③mainfoojoin

③ mainfoojoin:正確執行流程:主執行緒建立 foo 執行緒後繼續執行輸出 main,接著 pthread_join 等待 foo 執行緒完成(輸出 foo),最後主執行緒繼續輸出 join,結果為 mainfoojoin。

錯誤選項解析

  • ① foojoinmain:此順序假設 foo 先於 main 執行,但 pthread_create 僅是建立執行緒,主執行緒會繼續執行第 13 行的 `cout << "main"`,因此 main 會先輸出。
  • ② foomainjoin:此順序假設 join 在 main 之前輸出,但 pthread_join 是阻塞呼叫,必須等待 foo 執行緒結束後才會繼續執行第 15 行的 `cout << "join"`,因此 join 一定在最後。
  • ④ joinmainfoo:此順序假設 join 先於 main 輸出,但 pthread_join 位於第 14 行,在第 13 行輸出 main 之後才執行,因此 join 不可能在 main 之前。
Learning Tip

"本題核心考點為 pthread 執行緒的生命週期與同步機制。常考陷阱在於混淆 pthread_create(非阻塞,建立後主執行緒繼續)與 pthread_join(阻塞,等待子執行緒結束)的行為。實務上需注意執行緒排程的不確定性,但本題因主執行緒在 create 後立即輸出,故 main 必定先於 foo 輸出。"

學員答題分佈

①foojoinmain0%
②foomainjoin0%
③mainfoojoin0%
④joinmainfoo0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目