異なる関数と同じ引数オブジェクトを持つ2つのスレッドがそれらのオブジェクトに対して異なる値を与えるという問題があります。 clearifyする同じ引数オブジェクトを持つスレッドは異なる値を返します
、次のコードを守ってください:
class Player(){
// Definition of Player here
// with get- and set functions
// for a certain value.
}
class Game(){
static void Draw(Player p){
while(1){
gotoxy(p.getValue(), 15);
cout << p.name();
}
}
static void Move(Player p){
int x = p.getValue();
while(1){
if(_kbhit()){
p.setValue(++x);
}
}
}
void startGame(){
Player pl1(5);
thread thd1(Move, pl1);
thread thd2(Draw, pl1);
thd1.join();
thd2.join();
}
}
関数内でその値を取得するときの「x」「描画」、すべてのキーストロークのための関数「移動」が変化している値がまだありますが'pl1'の初期値(5)です。
「移動」が指定したのと同じ値を得るには、どのように「描画」を得ることができますか? 私は何か助けと指導を感謝します。
ありがとうございます!
スレッドの使い方を学ぶだけで済みます。これには迅速かつ簡単な答えが1つありません。アドレス空間を共有する実行フローの概念全体を理解する必要があります。あなたは、スレッド間で情報を共有/交換するために、ある種の方法が必要です。それはすべて確実にそれ自体では起こりません。 –