检查并设置
在計算機科學中，檢查並設定（test-and-set-lock，TSL）是一種不可中斷的原子運算。TSL 對某個記憶體位置寫入 1（set）並返回其舊值。
在多個行程可同時存取記憶體同個位址時，如果一個程式正在執行 TSL，其他程式在它執行完成前不能執行 TSL。中央處理器可提供 TSL 指令，或利用如雙埠隨機存取記憶體（Dual-ported RAM）等其它電子元件所提供的機制實現 TSL。
下述為一種利用 TSL 指令來實現自旋鎖：
function Lock (boolean *lock) {while (test_and_set (lock) == 1)
      ;
}

當舊值為 0 時，這程式可以得到鎖。否則的話，它會一直嘗試將 1 寫入記憶體位置，直到舊值為 0。
鎖 (lock) 的狀態一般是 0 (未鎖) 與 1 (已鎖)。因此下列 test_and_set 的實現是等價的：

if (lock==0) then 置鎖，進入臨界區；else 忙等待，重新測試；endif
讀取 lock 狀態；lock 被置為 1; 測試讀出的 lock 狀態，判斷進入臨界區還是忙等待；x86 組譯指令 BTS，意味 Bit Test and Set，就是一條原子操作的 CPU 指令。它把由運算元指定位址的鎖的狀態儲存入 CF 暫存器，然後鎖被設定為 1.
1991 年 Maurice Herlihy 證明 test-and-set 具有一個有限的 consensus number，能解決不超過 2 個並行行程的無等待 consensus 問題。