これは基本的にスレッドセーフであるライブラリの作成を開始したスレッド問題です。私の使用例は次の通りです。 -QThreadStorageを使用したスレッドセーフについてについて
struct <>
{
int thread_specific_value;
}
1)たとえば5つのスレッドをスピンします。
2)各スレッドは、操作を実行し、上記のデータ構造内にthread_specific_valueを格納します。これは、各スレッドの初期化時に動的に割り当てられ、QThreadStorageに追加されます。
3)すべてのスレッドがメインスレッドに戻ったら、すべてのスレッドのerrno値にアクセスして何らかの処理を行いたい。メインスレッドからスレッドを削除する前に、そのストレージデータの情報を取得し、メインスレッドの特定のストレージに格納することはできますか?
nutshellでは、スレッド固有のすべてのストアドデータのQThreadStorageを繰り返し処理し、メインスレッドから何らかの処理を行うにはどうすればよいですか?
返信いただきありがとうございます。私が以前に言ったように、私はスレッドを削除していません。したがって、ドキュメントごとに、スレッド固有のデータは破棄されません。このアクセシビリティを使用できる他のカスタムのオープンソーススレッドストレージデータ構造がありますか? – Kartlee
"QThreadStorageは、データの所有権(新しいものでヒープ上に作成する必要があります)を取得し、スレッドが正常に終了するか、終了するかによってスレッドを削除します。 - 終了時に、それが削除されたときではありません。スレッドからデータをやりとりする独自の方法をロールバックするのは難しくありません。また、実際の標準化されたメソッドを認識していないユースケースには十分な違いがあります(TLSを公開することは非常に稀です)。 。) – bdonlan
ある種のスレッド間通信にQThreadStorageを使用することはできます。例えば、共通の機能で認識されるマーカーでスレッドにタグを付けるとします。コードを実行しているスレッドの「名前」を認識するために使用します。 – AlexanderVX