FILE物件執行緒安全
阿新 • • 發佈:2019-01-24
根據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);