DEV C++でコンパイルするc++アプリケーションがあり、pthread
マルチスレッドライブラリが含まれています。私は2つのスレッドを持っています。デフォルトint main()
、および私が作成したスレッドは、曜日を一度に1つずつ、数秒ごとに出力します。しかし、これを実行すると機能しますが、プログラムにはカーソルが1つしかありません。0, 50
ここで問題が発生します。たとえば、カーソルではなくテキストを配置するだけで、これらの曜日を画面に座標に書き込む方法が必要です。これは、カーソルのある最初のスレッドが2番目のスレッドの出力に干渉しないようにするためであり、両方が同時に実行されます。
質問する
1071 次
1 に答える
0
ncursesなどを使用していると仮定しますか?したがって、コンソール端末は共有リソースであるため、ミューテックスで保護し、各スレッドでのカーソル位置に注意する必要があります。また、一方のスレッドを、もう一方のスレッドによってカーソル位置が復元されたボスとして宣言することもできます。その別のスレッドは、ミューテックスを取得した後、getcurx、getcuryなどを実行し、独自のポジショニングとアウトアウトを実行してから、getcurx/yで取得したカーソル位置を復元します。
いずれの場合も、すべてのスレッドはターミナルにアクセスする前にミューテックスを取得する必要があることに注意してください。
また、ncursesに組み込まれているスレッドサポートを利用できるかどうかを確認したり、注意したりすることもできますuse_screen
。use_window
于 2012-12-25T20:25:30.403 に答える