有時候需要防止一段**在被同時執行,就需要使用鎖來防止**重入。常常見到這樣的**:
if [ -f /var/lock/mylock ]; then touch /var/lock/mylock ... rm -f /var/lock/mylock fi但實際上,這樣是有問題的。如果兩個程序在 test ( [ ) 和 touch 之間,另乙個程序同時執行,就會出現競爭問題,最後就可能出現同時執行的情況。要避免這種情況出現,就得改一下加鎖的方式。可以用 mkdir 代替 touch,這樣在鎖目錄以及存在的時候,會直接出錯;
if mkdir /var/lock/mylock 2>/dev/null; then ... rm -rf /var/lock/mylock fi或者先用 set -c ,讓 > 重定向在檔案已經存在時出錯,然後用 echo … > 來生成鎖檔案
if ( set -c; echo $$> /var/lock/mylock 2>/dev/null); then ... rm -f /var/lock/mylock fi這兩種方法可以保證加鎖和檢測鎖是乙個原子操作,避免競爭問題。
bash 中有效建立鎖
有時候需要防止一段 在被同時執行,就需要使用鎖來防止 重入。常常見到這樣的 if f var lock mylock then touch var lock mylock rm f var lock mylock fi但實際上,這樣是有問題的。如果兩個程序在 test 和 touch 之間,另乙個程...
C C 獲取檔案中有效行的數量
幾種獲取檔案有多少行的方法 使用c 中的ifstream 與 getline函式搭配使用 如 std string file name f phone num 10000000.txt std ifstream ifs file name.c str int line count 0 記錄檔案中行的...
求單鏈表中有效節點個數
package com.atguigu.linkedlist classname singlelinkedlistdemo description 單鏈表測試 date 2021 2 28 author cakin public class singlelinkedlistdemo 功能描述 獲取單...