0

C ++で関数を並行して呼び出したいのですが、関数は入力を受け取り、フォーマット、検証、拡張などを実行します。

Unix では、ループ内で呼び出して、値を BG & で実行されている関数の引数として渡すことができます。

シェルスクリプトの例は次のとおりです。

echo $value | while read arg1 arg2
do
     parser arg1 arg2 &
done
wait

マルチスレッドの有無にかかわらずC ++でそれを行う方法は?

ありがとう...

4

2 に答える 2

1

「バックグラウンドで」または「並行して」物事を実行するには、マルチスレッドを使用する必要があります (特定のケースに応じて、同じプロセスで複数のスレッドを使用するか、複数のプロセスを使用します)。バックグラウンドで何かを実行したいときはいつでも、新しいスレッド/プロセスを作成し、バックグラウンドで実行したいコードを実行するように指示し、元のスレッド/プロセスで残りのコードを実行し続ける必要があります。

于 2012-04-16T18:46:35.747 に答える
0

他の人が指摘したように、サブプロセスまたはスレッドを作成する必要があります。これらの手法は両方とも、システムに依存するコードを必要とします。システムに依存せず、それをサポートするコンパイラにアクセスしたい場合 (サポートしていないコンパイラは知りません)、OpenMPを使用してマルチスレッドを実行できます。ただし、この手法は、ほとんどの場合、すべてのスレッドが同じアクションを実行する問題に適しています。

于 2012-04-16T19:07:58.537 に答える