iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0

名詞定義:

  • 行程(Process):執行中的程式。
  • 執行緒(Thread):CPU 使用時的一個基本單位,由一個執行緒 ID、程式計數器、一組暫存器,以及一個堆疊空間所組成(每個執行緒都有自己的局部變數 local variables)。它和屬於同一行程的其他執行緒共用程式碼區域(code section)、資料區域(data section)和作業系統資源(OS resources,譬如開啟的檔案和信號)。
  • 單執行緒(singlethreaded)行程 vs 多執行緒(multithreaded)行程
    https://ithelp.ithome.com.tw/upload/images/20240925/20168766jQqpMUKNQm.jpg

請 AI 給個簡單例子
single_threaded.py

import time

def task(name):
    print(f"開始任務: {name}")
    time.sleep(2)  # 模擬耗時操作
    print(f"完成任務: {name}")

# 主程式
task("任務1")
task("任務2")

multi_threaded.py

import threading
import time

def task(name):
    print(f"開始任務: {name}")
    time.sleep(2)  # 模擬耗時操作
    print(f"完成任務: {name}")

# 主程式
thread1 = threading.Thread(target=task, args=("任務1",))
thread2 = threading.Thread(target=task, args=("任務2",))

# 啟動執行緒
thread1.start()
thread2.start()

# 等待所有執行緒完成
thread1.join()
thread2.join()

執行 & 結果

python single_threaded.py

# 結果
開始任務: 任務1
完成任務: 任務1
開始任務: 任務2
完成任務: 任務2
python multi_threaded.py

# 結果1
開始任務: 任務1
開始任務: 任務2
完成任務: 任務1
完成任務: 任務2

# 結果2(由於兩個任務幾乎同時開始,但完成的順序可能會有所不同,這取決於系統的執行緒調度。)
開始任務: 任務1
開始任務: 任務2
完成任務: 任務2
完成任務: 任務1

可以看到 singlethreaded 會一個任務完成才開始做下一個; multithreaded 則是兩個任務同時開始。


上一篇
ch3圖3.31-產生了多少行程?
下一篇
ch3圖3.35-簡單殼介面的輪廓
系列文
十年後重讀作業系統恐龍本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言