私はコードの下に実行すると、出力はこれです: 私は300まで実行すると、出力はこれです:
私は100まで実行すると、出力はこれです:
これらの2つの方法は、ほぼ同時に開始されていますか?
これは両方の方法ことを意味していますほぼ同時に開始されましたか?
これが当てはまる場合、async-awaitで並列性を達成するには、なぜ並列ライブラリが必要なのでしょうか?
using System;
using System.Threading.Tasks;
class Program
{
public static void PrintX()
{
for (int i = 0; i < 500; i++) { Console.Write("x"); }
}
public static void PrintY()
{
for (int i = 0; i < 500; i++) { Console.Write("y"); }
}
public async Task RunAsync()
{
var t1 = Task.Run(() => PrintY());
var t2 = Task.Run(() => PrintX());
await t1;
await t2;
}
static void Main(string[] args)
{
Task t = new Program().RunAsync();
t.Wait();
}
}
コードサンプルをa)完全にインデントする(名前空間宣言を削除するか、クラスを字下げする)か、b)意味のあるメソッド名を付けることができますか? (CountForwardメソッドはカウントせず、PrintXメソッドはyを出力します...) –
しかし、はい、基本的に同時実行を取得しています。 TPLでは、物事をより慎重に管理することができます。 1つのソースからの作業項目を限定された作業セットに分散させることなどが含まれます。 –
コンソール出力は、並行性を可視にする最悪の可能性の1つです。ある時点で出力を同期させる必要があります。 – grek40