1. 程式人生 > >FILE物件執行緒安全

FILE物件執行緒安全

根據apue講述: 
    標準的IO例程可能從它們各自的內部資料結構的角度出發,是以執行緒安全的方式實現的!但線上程中,如果標準
    IO例程都獲取它們各自的鎖,那麼在做一次一個字元的IO時就會出現嚴重的效能下降!在這種情況下,需要對每
    一個字元的讀寫操作進行讀取鎖和釋放鎖的動作!而如果使用flockfile和ftrylockfile函式獲得給定FILE
    物件關聯的鎖,並在flockfile(或ftrylockfile)和funlockfile的呼叫包圍中呼叫不加鎖版本的基於字
    符的標準IO例程,這可以避免這種開銷!(FILE的鎖是遞迴的!佔有這把鎖的時候,還是可以再次獲取該鎖)

相關函式:
    #include <stdio.h>
void flockfile(FILE *filehandle); int ftrylockfile(FILE *filehandle); void funlockfile(FILE *filehandle); int getc_unlocked(FILE *stream); int getchar_unlocked(void); int putc_unlocked(int c, FILE *stream); int putchar_unlocked(int c);