スレッドローカル変数について教えてください。
VisualC 2005 でスレッドローカル変数を使っています。
__decspec(thread)やTLS関数を使っています。
この方法だとすべてのスレッドで独立したスレッドローカル変数が使用できるのですが、
容量が大きくなりすぎるため
あるスレッドのみ、スレッドで独立したスレッドローカル変数を使えるようにしたいと思っています。
何か方法はありませんか?
あるスレッドとは、同じスレッドを複数起動します。
そのスレッドのみ、特定のスレッドローカル変数を使用したいのです。
以上、よろしくお願いします。
スレッドローカル変数について
Re:スレッドローカル変数について
返信遅れてすみません。
説明たらずだったようで、、、補足させてください。
スレッドA、スレッドB、スレッドCがあります。
スレッドCが複数起動します。
スレッドCのみで使用できるスレッドローカルの方法を探しています。
スレッドCの本体は、既に実装済みのソースから流用です。
__decspec(thread) にてスレッドローカルとして定義してしまうと
スレッドCのソースを変更する必要はないのですが、
スレッドA、スレッドBでも同じ変数が定義されてしまうので、無駄な領域ができてしまいます。
TLS関数を使うと、スレッドCのみで使用できるスレッドローカル変数を定義できそう(やってません)
なんですが、ソースを変更しなければならないと思ってます。
そこで、2つの長所のみの
既存のソース内部を変更せずに何とかその外側で特定のスレッドのみ定義される
スレッドローカル変数というものが定義できないかと思ってます。
たかぎさんのご意見ですと、既存のソースの変更が必要になると思いますが、
いかがでしょうか?
説明たらずだったようで、、、補足させてください。
スレッドA、スレッドB、スレッドCがあります。
スレッドCが複数起動します。
スレッドCのみで使用できるスレッドローカルの方法を探しています。
スレッドCの本体は、既に実装済みのソースから流用です。
__decspec(thread) にてスレッドローカルとして定義してしまうと
スレッドCのソースを変更する必要はないのですが、
スレッドA、スレッドBでも同じ変数が定義されてしまうので、無駄な領域ができてしまいます。
TLS関数を使うと、スレッドCのみで使用できるスレッドローカル変数を定義できそう(やってません)
なんですが、ソースを変更しなければならないと思ってます。
そこで、2つの長所のみの
既存のソース内部を変更せずに何とかその外側で特定のスレッドのみ定義される
スレッドローカル変数というものが定義できないかと思ってます。
たかぎさんのご意見ですと、既存のソースの変更が必要になると思いますが、
いかがでしょうか?
Re:スレッドローカル変数について
ソースをまったく変更しないとなると、よほど幸運な状況(マクロ定義だけで済むとか)でない限り、コンパイラの変更か、それに近いことが必要になります。
対象となるコードを見せていただくとともに、どんな修正をしようとしているのかを具体的に補足してください。
対象となるコードを見せていただくとともに、どんな修正をしようとしているのかを具体的に補足してください。