ループが実行されている次のサンプルプログラムを検討してください。C++スレッドの概念
int main()
{
for (int i = 0; i<= 300; ++i) {
}
}
今の私はi
の値から毎秒を印刷したいとしましょう、かなり基本的な:「elaspedTimeは」を含む架空の整数であり、以下のような
cout << "i= " << i << "\n";
単純なループは、十分かもしれませんここでの最終的な目標は、以下の(assuのような出力を与えることです
int lastTime = 0;
while (true) {
if (elapsedTime > lastTime) { // Another second has passed
cout << "i= " << "\n";
lastTime = elapsedTime;
}
}
:秒数は、プログラムが魔法のようにOSによって更新が実行されていますそれは古い、遅いCPU上にあったので、明はループ)が正確に毎秒100回を走った:
$ ./myprog
i= 100
i= 200
i= 300
これらは本にもかかわらず、私は「古典的で、このような操作を実行する方法を参照していない、シンプルな機能とルーチンです"普通はmain()
という機能を持つC++プログラムです。シンプルさにもかかわらず、私はマルチスレッドを学ぶ必要があるのですか?または、関数をmain()
から呼び出すことは可能ですか?戻り値を待つのではなく、スレッドと呼ばれる関数を呼び出すことはできませんか?
私は何かが欠けているはずです。私はこれがスレッディングと何をしているのか理解していません。あなたがちょうど 'スリープ'機能を必要としているように見えます(他の処理には相当な時間がかかります)。 –
マルチスレッドは必要ありませんここに。マルチスレッドが必要なときは、それを知るでしょう。 –
申し訳ありませんが、私はこのすべてが 'main()'内で同時に起こりたいと思っていたと思いました。これらは本質的に互いに独立して走る2つのループであり、一方は他方の結果をプリントアウトする。それはそれをクリアしますか? – jwbensley