40 下列哪個不是取消點函數?
(A) read()
(B) write()
(C) pthread_create()
(D) pthread_testcancel()

答案:登入後查看
統計: A(0), B(1), C(5), D(2), E(0) #3399887

詳解 (共 2 筆)

#7319081

【第一步:找關鍵字】

關鍵字:

  • 取消點(cancellation point)(執行緒可以被安全終止的位置)

  • 不是(找例外)

  • 函數名稱辨識

? 這題在考:
哪些函數會檢查「要不要被取消」

【第二步:白話翻譯】

這題在問:

? 「哪一個函數『不會』讓執行緒在那裡被取消?」

【第三步:解題思路】

這題在考什麼觀念?

? pthread cancellation 機制

解題步驟

  1. 理解 cancellation point 是什麼

  2. 想哪些函數會「阻塞或檢查取消」

  3. 找出「不會」的

原理與規則(生活比喻)

把 cancellation 想成「老闆叫你下班」:

  • 你不會隨時停

  • 只會在「適當時機」停

? 例如:

  • 等資料(read)

  • 主動檢查(testcancel)

? 這些就是「取消點」

【第四步:選項分析】

(A) 為什麼錯?

✘ 錯(它是取消點)

? read():

  • 可能會阻塞(等待資料)

  • 是標準 cancellation point

(B) 為什麼錯?

✘ 錯(它是取消點)

? write():

  • 也可能阻塞

  • 也是 cancellation point

(C) 為什麼對?

✔ 正確(本題答案)

? pthread_create():

  • 只是建立執行緒

  • 不是 cancellation point

? 不會檢查取消請求

(D) 為什麼錯?

✘ 錯(它是取消點)

? pthread_testcancel():

? 專門用來:

主動檢查是否要取消

? 是最典型的 cancellation point

【觀念補充與延伸】

核心觀念定位

? 作業系統 / 多執行緒(pthread)
? 中高頻觀念題

什麼是 Cancellation Point?

? 執行緒在這些地方:

  • 會檢查是否有取消請求

  • 若有 → 安全結束

常見 cancellation point

類型 函數
I/O read(), write()
等待 sleep(), wait()
thread pthread_testcancel()

為什麼需要?

? 避免:

  • 在錯誤時機中斷

  • 資料不一致

? 提供「安全終止點」

觸類旁通(舉一反三)

對比概念

  • 非取消點 → 不會被中斷

  • 取消點 → 可安全中斷

變化題型

  • 問:如何手動建立取消點?
    ? pthread_testcancel()

【記憶口訣】

? 「阻塞與檢查 → 才是取消點」

【常見陷阱】

學生最容易搞混的地方

看到 pthread 就以為都是取消點

心理盲點

以為所有函數都能被中斷

避坑指南

? 記住:

只有「可能停住」或「主動檢查」的才是取消點

0
0
#6786483
1. 題目解析 在這道題目中,我們被要...
(共 991 字,隱藏中)
前往觀看
0
1