• ベストアンサー

static変数について

struct XXX { char *aaa; char *bbb; }; static struct XXX YYY[] = { {NULL, "JJJ"}, ... }; thread(){ ... } 上記のstatic変数をスレッド関数thread()の外部変数として設定した場合、 *aaaの値はスレッドごとには確保することできませんでしょうか。 上書きされてしまうのでしょうか。 やはりスレッドセーフではないのでしょうか。 その際、どのように設定してあげればよいのでしょうか。 どなたかご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

スレッド毎に参照する構造体を別の領域にしたいのなら スレッドの起動時にmalloc(C++ならnew)すれば良いのでは? 少なくとも上記のようなコードでは上書きしますね。 ちなみにスレッドセーフかどうかという話はあまり関係ありません。 その辺について知りたければ 「セマフォ」や「ミューテックス」で検索してください。 あとstaticの意味も勘違いしているようです。 上記のコードのstaticはグローバル変数YYYを 外部のファイルからは参照できないようにしているだけです。

関連するQ&A