2

最近_nolock 関数の存在を発見しましたが、これらに関する情報がほとんどないことに驚いています。パフォーマンスが向上すると書かれていますが、ベンチマークが見つかりません。また、プログラムが独自のロックを行う場合、マルチスレッドプログラムで使用できるとも書かれていますが、何をロックする必要がありますか? すべての CRT 呼び出しが同じロックを通過する必要がありますか? 関数ごとに1つ?関数のグループごとに 1 つですか? もしそうなら、グループを定義するものは何ですか?

これらの機能に関する詳細情報を教えていただけますか? ありがとう :-)

4

2 に答える 2

1

複数のスレッドからファイルにアクセスしている場合は、ファイルへのアクセスをロックする必要があります。そうしないと、あるスレッドが別のスレッドの途中で書き込みを行う可能性があります。stdio に出力して効果を確認してみてください。

于 2008-12-23T20:31:00.617 に答える
0

個々の関数へのリンクをたどると、次の行が表示されます。

この関数は、シングル スレッド アプリケーションなどのスレッド セーフなコンテキスト、または呼び出し元のスコープが既にスレッドの分離を処理している場合にのみ使用してください。

パフォーマンスの違いをベンチマークする唯一の方法は、小さなプログラムを作成してテストすることです。monjardin が指摘したように、関数でアクセスしているファイルへのアクセスをロックする必要があります (ドキュメントに記載されているように、シングルスレッド環境にいる場合を除きます)。

于 2008-12-23T20:39:09.803 に答える