1

DEV C++ でアプリをコンパイルし、pthreads ライブラリを使用してマルチスレッドにします。私のメインスレッドは、「Hello World」を画面の先頭 (0,0) に出力することで構成されています。新しく作成したスレッドは、「Monday」を画面の中央、一番上の行 (0,60) に出力することで構成されています。私は pthreads を使用しているので、それらは同時に実行されます。これは良いことです。ただし、カーソルは 1 つしかないため、一度に 1 つしか印刷できませんでした。両方が実行される正確な瞬間に印刷されるようにします。シンプルな cout << "Hello World"; で画面に書き込みます。

実行時に複数の文字列を書き込むには、ある種の curses ライブラリが必要ですか? または、標準の C++ を使用して実行できますか? 2 つのものを出力したいのですが、一度に 1 つずつ出力されることを思い出してください。異なる座標で同時に 2 つの文字列を出力するにはどうすればよいですか?

4

2 に答える 2

1

David H がコメントで言っているように、1 つのスレッドを使用してディスプレイに書き込み、キューを用意します。

キューには、次のようなデータが含まれている場合があります。

class printing
{
 public:
   printing(int x, int y, const std::string &str);

 private:
   const std::string m_str;
   int m_x;
   int m_y;
};

std::queue<printing> print_queue;

キューに物を追加/削除するには、ミューテックスなどが必要になります。

std::mutex print_queue_mutex;

void add_printing(printing &pr)
{
    print_queue_mutex.lock();
    print_queue.push_back(pr);
    print_queue_mutex.unlock();
}

実際の「キューからの印刷」機能を実行する方法を理解させます。それは同じ原則に従います。

于 2012-12-26T17:35:54.840 に答える
0

スレッドが画面に書き込む前に取得する必要があるロックを作成します。

于 2012-12-26T23:45:36.413 に答える