課程內(nèi)容
Python并發(fā)編程高級課程--線程的同步和通信
線程通信:
之前的課程中我們學(xué)過進(jìn)程之間的通信,線程之間的通信有所不同,線程之間的通信是通過全局對象來進(jìn)行通信的。舉例說明:進(jìn)程中的所有線程共享進(jìn)程的地址空間,可以定義一個全局變量,在各個不同進(jìn)程中,根據(jù)全局變量的不同狀態(tài),來執(zhí)行不同的進(jìn)程,類似于條件選擇語句。
線程同步:
線程同步與進(jìn)程同步一樣,引入同步機(jī)制是為對線程間的并發(fā)操作進(jìn)行協(xié)調(diào)和制約。進(jìn)程內(nèi)的多個線程對共享資源進(jìn)行并發(fā)讀寫時,必須進(jìn)行同步,否則會出現(xiàn)數(shù)據(jù)不一致的情況。
舉例說明線程同步的重要性:
進(jìn)程內(nèi)有一個全局變量,初始值1000,表示銀行卡中的余額,進(jìn)程中有兩個線程不斷進(jìn)行消費(fèi),并更新全局變量的值。
同進(jìn)程同步一樣,線程也可以通過互斥鎖,信號量來進(jìn)行同步,此外還可以通過條件變量來進(jìn)行同步。

- 上一篇
Python并發(fā)編程高級課程--線程
什么是線程?上節(jié)課中,我們降到了進(jìn)程,知道了每創(chuàng)建一個進(jìn)程,都需要系統(tǒng)分配CPU、內(nèi)存、磁盤等資源。而系統(tǒng)中不止一個進(jìn)程。在進(jìn)程和進(jìn)程之間切換的時候,系統(tǒng)需要記錄之前進(jìn)程的執(zhí)行狀態(tài)信息,以便下次執(zhí)行時調(diào)用。由于在早期的電腦中,進(jìn)程的創(chuàng)建、切換、銷毀存在較大的
- 下一篇
Python并發(fā)編程高級課程--協(xié)程
什么是協(xié)程?所謂的協(xié)程,對應(yīng)的是程序中的一部分處理邏輯,比如程序中的某一個函數(shù)。與函數(shù)的區(qū)別在于,協(xié)程僅表示一個處理過程,通常沒有返回值。進(jìn)程和線程的調(diào)度和切換由操作系統(tǒng)來進(jìn)行控制,而協(xié)程的切換則由程序員進(jìn)行控制。同學(xué)們在理解協(xié)程時,只需將它理解為一個函數(shù)