iOS 函數積累


頭文件: units. h
語法:  void usleep( int micro_seconds);
返回值 : 無
內容說明: 本函數可暫時使程序中止執行. 參數micro_seconds 爲要暫停的微妙數(us). 
說明:
      這個函數不能工做在 windows 操做系統中. 用在 Linux 的測試環境下面
      參見:usleep() 與 sleep() 相似, 用於延遲掛起進程. 進程被掛起放到 reday queue 中.
      通常狀況下, 延遲時間數量級是秒 s 的時候, 儘量使用 sleep() 函數; 若是延遲時間爲幾十毫秒ms 或者更小的時候, 儘量使用 usleep() 函數. 這樣才能最佳的利用 cpu 時間.
 
時鐘單位換算:
 微妙(us:英語 microsecond)
1us =  1/ 1000000 s;
1s = 1000ms;  //  毫秒
1ms =  1000 us;  //  微秒
1us =  1000 ns;   //  納秒
1ns =  1000 ps;   //  皮秒

 

 flock() 函數:
flock() 函數原型:  int flock( int fd,  int operation);
其中, 參數 fd 表示文件描述符; 參數 operation 指定要進行的鎖操做, 該參數的取值有以下幾種:
LOCK_SH: 表示要建立一個共享鎖, 在任意時間內, 一個文件的共享鎖能夠被多個進程擁有;
LOCK_EX: 表示建立一個排他鎖, 在任意時間內, 一個文件的排它鎖只能被一個進程擁有;
LOCK_UN: 表示刪除該進程建立的鎖;
LOCK_MAND: 它主要是用於共享鎖模式強制鎖, 它能夠與 LOCK_READ 或則 LOCK_WRITE 聯合使用, 從而表示是否運行併發的讀操做或者併發的寫操做.
一般狀況下, 若是鎖清秋不能被當即知足, 那麼系統調用 flock() 會阻塞當前進程. 好比: 進程想要請求一個排它鎖, 但此時, 已經有其餘進程得到這個鎖, 那麼該進程將會被阻塞. 若是想要在沒有得到這個排它鎖的狀況下不阻塞該進程, 能夠將 LOCK_NB 和 LOCK_SH 或者 LOCK_EX 聯合使用, 那麼系統就不會阻塞該進程. flock() 所加的鎖會對整個文件起做用. 
 
注意:
1. 對於文件的 close() 操做回事文件鎖失效;
2. 同理, 進程結束後文件鎖失效;
3. flock() 的 LOCK_EX 是勸告鎖, 系統內核不會強制檢查鎖的狀態, 須要在代碼中進行文件操做的地方顯示檢查才能生效. 
相關文章
相關標籤/搜索