Linux 核心執行緒通訊

2021-08-29 12:16:49 字數 1096 閱讀 3836

互斥鎖

define_mutex    靜態定義和初始化乙個互斥鎖,static define_mutex(fsl_ifc_nand_mutex);

mutex_init          動態初始化乙個互斥鎖,mutex_init(&ecc->lock);

mutex_lock        加鎖,阻塞引起睡眠,不能被中斷,mutex_lock(&bch->lock);

mutex_lock_interruptible    阻塞引起睡眠,不能被中斷,mutex_lock_interruptible(&ecc->lock);

mutex_unlock    解鎖,mutex_unlock(&ecc->lock);

自旋鎖

spin_lock_init   初始化自旋鎖x,spin_lock_init(x);

spin_lock          加鎖,不會引起阻塞和睡眠

spin_trylock      盡力獲得自旋鎖,如果能立即獲得鎖,並返回真,否則不能獲得鎖,立即返回假

spin_unlock      釋放自旋鎖

訊號量

static define_semaphore(console_sem);

sema_init    初始化設定訊號量的初值,sema_init(&console_sem, 1);    

down           獲得訊號量sem,引起睡眠,因此不能在中斷上下文,判斷sem大於0,減1繼續執行,否則掛起等待訊號量,down(&console_sem);

down_interruptible    可被訊號中斷;

down_trylock            獲得訊號量失敗馬上返回,不會引起睡眠;

up                釋放訊號量sem,把sem的值加1,up(&console_sem);

讀寫訊號量

init_rwsem

down_read

down_write

up_read

up_write

還有更多的其他方式,待發現。。。

Linux核心執行緒

核心執行緒是直接由核心來啟動的程序,通常也稱為守護程序,用於執行下列任務 記憶體頁很少使用時,換出。管理延時的動作。實現檔案系統的事務日誌。週期性的將修改的記憶體頁與頁 塊裝置同步。其它。核心執行緒按照工作方式可以分為兩種型別 執行緒啟動後一直在等待,直到核心請求執行緒執行某一特定操作。執行緒啟動後...

Linux 執行緒通訊

linux系統中的程序間通訊方式主要以下幾種 同一主機上的程序通訊方式 unix程序間通訊方式 包括管道 pipe 有名管道 fifo 和訊號 signal system v程序通訊方式 包括訊號量 semaphore 訊息佇列 message queue 和共享記憶體 shared memory ...

Java核心類庫,執行緒通訊

執行緒通訊 不同的執行緒執行不同的任務,如果這些任務有某種關係,執行緒之間必須能夠通訊,協調完成工作。我們來看乙個案例 生產者和消費者案例 producer consumer 生產者和消費者應該操作共享的資源 實現方式來做 使用乙個或多個執行緒來表示生產者producer 使用乙個或多個執行緒來表示...