2012-03-13 7 views
0

私はいくつかのスレッドがユーザによって入力された文字列に基づいて形成され、その後、それぞれのスレッドによってオープンされたファイルから関数の読み込みと呼ばれるプログラムを書いています。マルチスレッド:ファイルポインタのセグメンテーションフォールト、特定のスレッドのファイルポインタが特定(またはユニーク)ではありませんか?

スレッドのコードでは、ファイルポインタ 'f1'を使用して各スレッドでファイルを開きますが、コードを実行するとセグメント化エラーが発生します。

ファイルポインタはスレッドごとに固有ではありませんか。複数のファイルから同じ時刻に読み込むと、値が突然変化しますか?

助けてください。

+0

コードが役立ちます。 – twain249

答えて

0

通常、グローバル変数はプロセスの異なるスレッド間で共有されますが、ローカル変数は共有されません。

+0

それは、呼び出された関数でのみファイルポインタを宣言すれば、スレッドごとに異なる変数として扱われますか?あるスレッドのファイルポインタは、他のスレッドの処理では操作されません。 –

+0

はい。スレッドには別々のスタックがありますが、一般的なヒープです。 – Matthias

+0

他の競合がある可能性があります。ファイルポインタは、同じファイルを指している可能性があります。 twain249が述べたように、コードはあなたの問題を見つけるのに役立つかもしれません。 – Matthias

関連する問題