ページ 11

C++(boost)でマルチスレッドを触ってみたのですが・・・

Posted: 2014年9月15日(月) 07:56
by weaseve
マルチスレッドをやってみようとしてboostのマルチスレッド用のを使って作って見てるのですが、
排他制御とかミューテックスとかがいまいちよくわかりません。
メインスレッドの構造体orクラスのポインタをスレッドAとスレッドBが受け取り、それぞれのスレッドが構造体orクラスの変数を読み書きするとき、変数が違っても同じ構造体またはクラスなら大丈夫なのでしょうか。
構造体またはクラスが2つあったとし、(構造体orクラス)AをスレッドAが受け取り、(構造体orクラス)BをスレッドBが受け取り、それぞれが変数をいじってる場合は問題無いですよね?

Re: C++(boost)でマルチスレッドを触ってみたのですが・・・

Posted: 2014年9月15日(月) 12:57
by softya(ソフト屋)
同じメモリ(インスタンス)を別のスレッド(メイン・スレッドA・スレッドB)と同時に参照・更新をしなければ問題ありません。

Re: C++(boost)でマルチスレッドを触ってみたのですが・・・

Posted: 2014年9月15日(月) 13:17
by weaseve
ありがとうございます。
あと
std::mutex mtx;というのを動的確保してスレッドにポインタで渡してもいいものなのでしょうか。グローバルなのはあまり好きではないので

Re: C++(boost)でマルチスレッドを触ってみたのですが・・・

Posted: 2014年9月15日(月) 13:53
by softya(ソフト屋)
大丈夫だと思いますがC++11のstd::mutexを使ったことがないんで完璧に把握していわけではありません。

>グローバルなのはあまり好きではないので

グローバルである方が管理が容易であるものをわざわざスレッド間で受け渡しするのも危険が増えるだけなので、メンテナンス性など考えて決めてくださいね。
まぁ、余りやらないことなので試験が面倒そうって気がします。

Re: C++(boost)でマルチスレッドを触ってみたのですが・・・

Posted: 2014年9月15日(月) 14:57
by weaseve
はい、ありがとうございました