鎖測試與超時

2021-08-14 09:12:30 字數 641 閱讀 4555

先來比較一下lock的四個鎖方法:

1.void lock()

在等待獲取鎖的過程中休眠,禁止一切執行緒排程

2.void lockinterruptibly() throws interruptedexception

在等待獲取鎖的過程中可以被中斷,被中斷後丟擲異常

3.boolean trylock()

獲取到鎖返回true,獲取不到鎖返回false,不會等待

4.boolean trylock(long time, timeunit unit) throws interruptedexception

在指定時間內獲取鎖,在等待過程中可被中斷,被中斷後丟擲異常,獲取到鎖返回true,指定時間到後返回false

第一種方法,執行緒在等待鎖的期間禁止一切執行緒排程,所以即使被中斷,它也要等到獲得鎖以後才能進行下一步操作,否則會一直處在阻塞狀態,這樣就容易引起死鎖。所以引入了其他三種方法,可以避免死鎖或允許打破死鎖。

在等待條件時,也可以使用超時方法,mycondition.await(long time, timeunit unit) throws interruptedexception

Qt 實現超時鎖屏

最近使用qt實現超時鎖屏的功能 工控機觸控螢幕 當手長時間不觸控螢幕的時候,程式超時會顯示鎖屏視窗。主視窗超時顯示鎖屏視窗 系統視窗超時顯示鎖屏視窗 首先開啟乙個執行緒用於qtimer定時器計時,最開始進入軟體開啟定時器計時,超時則顯示鎖屏視窗 而手觸控螢幕會觸發滑鼠點選事件,則停止計時 而手離開螢...

帶有超時的讀寫鎖

與互斥量一樣使應用程式在獲取讀寫鎖時避免陷入永久阻塞狀態。這兩個函式是 include include int pthread rwlock timedrdlock pthread rwlock t restrict rwlock,const struct timespec restrict abs...

單元測試系列二 單元測試如何測試異常與超時

一 測試異常 1.使用 test的expected屬性測試異常 第一種方式,使用expected屬性 test expected filenotfoundexception.class public void usingexpected throws filenotfoundexception2.使...