2009-09-02 16 views
1

マルチスレッドアプリケーションでスレッド固有のデータを使用する場合は、別のコレクタスレッドからこれらのデータに定期的にアクセスする方法はありますか。出来ますか?スレッド固有のデータ

よろしくラム

+0

どのオペレーティングシステムをターゲットにしていますか? –

+0

これはすべての味のためです。しかし、もし私がLinuxを手に入れれば、それは良いと思う。 – vpram86

答えて

1

はい、プロセス(アプリケーション)のすべてのスレッドが同じメモリを共有します。データのアドレスをコレクタスレッドに渡すだけです。同時アクセスには注意が必要です。更新中にメモリの一部を読み込むことです。ミューテックスを使用してメモリゾーンを保護する必要があるかもしれません。

+0

ありがとう!つまり、私のデータ用のすべてのスレッドに割り当てられたアドレスを共通のリストに入れる必要があります。コレクタスレッドは、参照したり、アクセスしたり、データを取得したりすることができますか?同期化された方法で? – vpram86

+0

はい、作成時にアドレス[es]をコレクタスレッドに渡すことができます。 – philant

+0

ありがとうphillipe! – vpram86

0

特定のシステムでは、いわゆるスレッドローカルストレージで変数を作成することができます。 Gcc manualは、どのように達成できるかを説明し、Drepperの記事へのリンクを提供しています。これはC標準の拡張であるため、システムの下では異なるメカニズムが必要です。

+0

それは非常にinfromativeようです。どうもありがとう。私はそれを見ます。 – vpram86

関連する問題