structをthread引数としてpthread_createに渡すことができます。スレッドでpthread_create引数を変更できますか?
スレッド内でこの構造体を変更すると、スレッドが終了するとメインプログラムがこの構造体にアクセスして変更されたデータを取得できるようになりますか? もしそうなら、スレッド内の構造体をvoidにキャストする必要がありますか?
structをthread引数としてpthread_createに渡すことができます。スレッドでpthread_create引数を変更できますか?
スレッド内でこの構造体を変更すると、スレッドが終了するとメインプログラムがこの構造体にアクセスして変更されたデータを取得できるようになりますか? もしそうなら、スレッド内の構造体をvoidにキャストする必要がありますか?
はい - スレッド関数がポインタによって構造体を渡されたと仮定すると、それが指す構造体を変更できます。
いいえ - スレッドで構造体をvoidにキャストする必要はありません。確かに、私はあなたが何を考えているのかは分かりませんが、その必要はありません。スレッド関数の引数はvoid *
です。それはstruct whatever *
にキャストされます。それを参照することができます。
他のスレッドが構造を変更できる場合は、変更を適切に調整していることを確認してください。
はい、可能ですが、スレッドが完了するまでデータに触れないでください。少なくとも保護なし。
簡潔な回答ありがとうございます! – yongtw123