flockってこの認識で正しい?

flock処理に関して
 LOCK_EX,LOCK_SH,LOCK_UN はサポートされていれば TRUE しか返さない。
 要求が通るまで処理は中断する。
 LOCK_SH は LOCK_EX が要求された段階で新たな要求は通らなくなる。

LOCK_NBと第三引数(WouldBlock)
 要求が通らなくても FALSE で制御を戻す。
 この際、WouldBlock は FALSE だが、要求が通った段階で TRUE に変わる。

バッファリング
 lock権解放前にファイル書込を終了せねばならない。
 バッファサイズ0にする方法は1度のシステムコールで書込が終わる状況ならばパフォーマンスの低下を招かない。
 一般的にはバッファリング有で fflush する方が楽。

fopen
 flock が必要な状況で 'w','w+' は鬼門。lock権確立前にファイルサイズが0にされる。
 'r','r+'は存在が確実なファイルで使う。file_existsで確認後に使うのはNG。その一瞬で過去の情報になる恐れあり。

rewind と fseek
 SEEK_CUR,SEEK_END はlock権確立後に使わないと過去の情報になる恐れあり。
 SEEK_SET,rewind は過去の情報でも問題ないのでlock権確立前で構わない。

flock と pid
 lock権の管理にはpidが使われる。
 同一pidの他スレッドが要求したlock権との区別はされない。