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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
weaseve
記事: 29
登録日時: 12年前

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

#1

投稿記事 by weaseve » 11年前

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 11年前

同じメモリ(インスタンス)を別のスレッド(メイン・スレッドA・スレッドB)と同時に参照・更新をしなければ問題ありません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

weaseve
記事: 29
登録日時: 12年前

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

#3

投稿記事 by weaseve » 11年前

ありがとうございます。
あと
std::mutex mtx;というのを動的確保してスレッドにポインタで渡してもいいものなのでしょうか。グローバルなのはあまり好きではないので

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 11年前

大丈夫だと思いますがC++11のstd::mutexを使ったことがないんで完璧に把握していわけではありません。

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

グローバルである方が管理が容易であるものをわざわざスレッド間で受け渡しするのも危険が増えるだけなので、メンテナンス性など考えて決めてくださいね。
まぁ、余りやらないことなので試験が面倒そうって気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

weaseve
記事: 29
登録日時: 12年前

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

#5

投稿記事 by weaseve » 11年前

はい、ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る