- ベストアンサー
static変数について
struct XXX { char *aaa; char *bbb; }; static struct XXX YYY[] = { {NULL, "JJJ"}, ... }; thread(){ ... } 上記のstatic変数をスレッド関数thread()の外部変数として設定した場合、 *aaaの値はスレッドごとには確保することできませんでしょうか。 上書きされてしまうのでしょうか。 やはりスレッドセーフではないのでしょうか。 その際、どのように設定してあげればよいのでしょうか。 どなたかご教授お願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
スレッド毎に参照する構造体を別の領域にしたいのなら スレッドの起動時にmalloc(C++ならnew)すれば良いのでは? 少なくとも上記のようなコードでは上書きしますね。 ちなみにスレッドセーフかどうかという話はあまり関係ありません。 その辺について知りたければ 「セマフォ」や「ミューテックス」で検索してください。 あとstaticの意味も勘違いしているようです。 上記のコードのstaticはグローバル変数YYYを 外部のファイルからは参照できないようにしているだけです。