4

ACE スレッドを使用しており、各スレッドに独自の int メンバーが必要です。それは可能ですか?

4

5 に答える 5

2

ACE はこれを「スレッド固有ストレージ」と呼んでいます。これをチェックしてください:ACE_TSS。私が知っているのはこれくらいです。申し訳ありませんが、これ以上の助けにはなりません。

スレッド ローカル ストレージのウィキペディア ページには、これを行う pthreads の方法もあると書かれています。

于 2010-03-10T21:38:43.803 に答える
0

ACE_TSS にすべてのスレッドの初期値を設定させる方法はありません。ただし、スレッド関数に入力した直後に初期値を簡単に設定できます。

于 2010-03-11T16:06:51.140 に答える
0

そのプラットフォーム固有。たとえば、Windows を使用する必要があります__declspec( thread )。コンパイラはTLS API (TlsAlloc、TlsFree など) を活用し、Win32 では常に TLS の代わりに FLS (Fiber Local Storage) を使用する必要がありますが、最新の Win32 バージョンではいず​​れにしても TLS API がサイレントに FLS にリダイレクトします。

于 2010-03-10T21:38:55.380 に答える
0

はい。ACS_TSS<type>「スレッド固有のストレージ」(つまり、スレッドローカル変数)用に設計されたテンプレートを使用できます。

詳細については、ACE_TSS のドキュメントを参照してください。

于 2010-03-10T21:41:01.757 に答える
0

GCC は、一部のターゲットに対して TLS を直接サポートしています。スレッドローカル変数を定義するために GCC 固有の__threadキーワードを使用できます (静的またはグローバルである必要があります)。

libACE 自体にはスレッド ローカルな機能が組み込まれています。ドキュメントを参照してサンプル コードを確認してください。

于 2010-03-10T21:41:12.067 に答える