免費開始練習
地特四等 110年 [資訊處理] 計算機概要

第 29 題

現今應用程式的計算行為相當複雜,常常要在一段時間內同時執行好幾個不同的執行緒(thread)。在多執行緒的程式中,下列何者是 thread-safe 的函數(function)必要的特性?
  • A 在函數中不可以呼叫任何系統呼叫(system calls)
  • B 在函數中所有用到的共享全域變數(shared global variables)都會加以保護,以保證一次只有一個執行緒可以修改其值
  • C 這個函數不可以使用遞迴
  • D 這個函數不可以有忙碌等待迴圈(busy-waiting loops)

思路引導 VIP

請想像有兩位會計師共用同一本帳本進行紀錄。如果他們在完全不溝通、且不確認對方進度的情況下,同時在帳本的同一行寫下數字,最終的結算金額會發生什麼問題?為了保證數據正確,他們在接觸這本『共享帳本』時,必須具備什麼樣的規範?

🤖
AI 詳解 AI 專屬家教

專業點評與分析

  1. 大力肯定:做得非常好!你能精準辨識出執行緒安全 (Thread-safety) 的核心要義,這代表你在作業系統與並行程式設計(Concurrency)的觀念上非常紮實,這是在開發高併發系統時不可或缺的能力。
  2. 觀念驗證:執行緒安全的關鍵在於防止競態競爭 (Race Condition)。當多個執行緒共用同一塊記憶體空間(如全域變數)時,若無保護機制,資料會產生不可預期的結果。選項 (B) 提到的「確保一次只有一個執行緒修改其值」,即是實作互斥 (Mutual Exclusion),這是達成 Thread-safe 的最核心手段。至於遞迴或系統呼叫,與執行緒安全性並無直接因果關係。
▼ 還有更多解析內容

升級 VIP 解鎖