F GETLK與F SETLK的使用

2021-06-30 16:20:50 字數 1410 閱讀 7854

fcntl()函式呼叫成功,返回0。

f_getlk申請鎖,成功返回l_type=f_unlck;否則,返回原值。

f_setlk加鎖或解鎖,成功返回l_type為預置值。

共享(讀)鎖與獨佔(寫)鎖在單程序中可互相取代,多程序不相容。

多程序,原鎖為讀鎖時,在同檔案域可設讀鎖;原鎖為寫鎖,在同檔案域不可設讀/寫鎖。

#include

#include

#include

#include

int main()

region.l_type=f_rdlck;

region.l_whence=seek_set;

region.l_start=0;

region.l_len=50;

region.l_pid=1;

if((res=fcntl(fd,f_getlk,®ion))==0)

}else

region.l_type=f_rdlck;

region.l_whence=seek_set;

region.l_start=0;

region.l_len=40;

region.l_pid=2;

if((res=fcntl(fd,f_setlk,®ion))==0)

}else

region.l_type=f_wrlck;

if((res=fcntl(fd,f_getlk,®ion))==0)

}else

region.l_type=f_wrlck;

region.l_whence=seek_set;

region.l_start=0;

region.l_len=40;

region.l_pid=2;

if((res=fcntl(fd,f_setlk,®ion))==0)

}else

close(fd);

}

程式執行結果:

read lock will be setted.

l.type has not been changed.

l_start=0

l_len=50

l_pid=1

l.type has been changed.

l_start=0

l_len=40

l_pid=2

write lock will be setted.

l.type has not been changed.

l_start=0

l_len=40

l_pid=2

l.type has been changed.

l_start=0

l_len=40

l_pid=2

FORALL與BULKCOLLECT的使用方法

1 使用forall比for效率高,因為前者只切換一次上下文,而後者將是在迴圈次數一樣多個上下文間切換。2 使用bluk collect一次取出乙個資料集合,比用游標條取資料效率高,尤其是在網路不大好的情況下。但bluk collect需要大量記憶體。使用例子 1 定義乙個table create ...

display與visibility的使用 區別

display none 隱藏元素,且此元素無物理位置 visibility hidden 隱藏元素,但元素的物理位置依然存在 因為display none導致頁面上無此元素的空間,js就獲取不到此元素的資訊,此時應用visibility hidden來代替display none display ...

pyenv virtualenv 的安裝與使用

1 安裝pyenv 建立安裝目錄 mkdir pyenvgit clone pyenv git clone pyenv plugins pyenv virtualenvecho export pyenv root home pyenv bash profile echo export path py...