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);
相關文章
相關標籤/搜索