0

TLDR : void * 型の変数を使用して文字列ポインタを保持していますが、文字列の値を変更するにはどうすればよいですか?

背景 IPC による宿題が発生した。
シェフとウェイターの 2 つのプロセスがあり、ウェイターがシェフに何らかの入力 (パーティーの着席、テーブルの注文、チェックアウトの準備など) を行い、シェフが関連するウェイターに情報を送り返します (明らかに、すべてのウェイターがそうであるとは限りません)。同時にすべてのテーブルにサービスを提供します)。

私の(確かに不格好な)解決策:
1.シェフは「シェフ」FIFOファイルを開いて読み取ります
2.ウェイターは「シェフ」を開いて書き込み、ウェイターの名前を書き込み、その名前でFIFOを開いて読み取ります。
3. Chef はウェイターの名前を読み取り、書き込むために FIFO を開きます。
3.a. (私が抱えている問題とはあまり関係ありません)シェフがシステムを閉じるまで、ウェイターは「シェフ」を介して入力を送信します。
4. ウェイターの入力中に、シェフが情報を返信しなければならない場合があります。シェフが出力に入ると、どの出力 FIFO に書き込むかを決定するためのチェックが行われます。

質問 2 つの pthread があり、文字列を送り返す必要があります。与えられた 1 つのパラメーターとして文字列ポインターを渡しました (この場合は void *arg と呼ばれます)。情報を送り返す必要があるときは、渡したポインターに文字列を入れようとしています。とにかくそれを行う方法をまだ見つけていません。だから私の質問は、どうすればこのようにできるでしょうか?

4

1 に答える 1

0

私は以下を利用して巻き上げました:

string* temp = static_cast<string*>(arg);

次に、変更されたばかりの温度を変更しました。arg は文字列の位置をメイン スレッドに保持していたので、temp がそれを取得し、文字列を temp に入れることができました。このようにしてスレッド間通信が確立され、ひどいデザインを実装し続けることができました。

于 2012-12-11T17:47:59.933 に答える