小编Bin*_*neG的帖子

任务不是并行运行的

我想并行运行一些事情,但它所做的只是减慢一切。这是一个示例(不是我的实际问题,但它模拟了它)。

如果我只运行一次迭代,则运行时间约为 2 秒,但当我尝试突然运行 10 个并行实例时,每个实例的运行时间约为 20 秒。

await RunParallel();

private async Task RunParallel()
{
    var tasks = Enumerable.Range(0, 1)
        .AsParallel()
        .Select(async x =>
        {
            AppLogger.WriteInfo($"task {x}");
            await DoSomeWork();
        })
        .ToList();

    await Task.WhenAll(tasks);
}

private Task DoSomeWork()
{
    return Task.Run(() =>
    {
        Stopwatch workWatch = Stopwatch.StartNew();

        string input = "Just some random string to hash it";
        for (int i = 0; i < 1000000; i++)
        {
            using (SHA1 sha1 = SHA1.Create())
            {
                var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
                var sb = new …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing async-await

1
推荐指数
1
解决办法
320
查看次数

标签 统计

async-await ×1

c# ×1

parallel-processing ×1