相关疑难解决方法(0)

可以从多个线程等待相同的任务 - 等待线程安全吗?

等待线程安全吗?似乎Task类是线程安全的,所以我猜等待它也是线程安全的,但我还没有在任何地方找到确认.线程安全也是定制awaiter的要求 - 我的意思是IsCompleted,GetAwaiter等方法?即如果这些方法不是线程安全的,那么等待是否是线程安全的?但是,我不希望很快就需要定制的等待者.

用户场景的一个示例:假设我有一个后台任务,它以异步方式返回结果,然后从多个线程使用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace scratch1
{
    class Foo
    {
        Task<int> _task;

        public Foo()
        {
            _task = Task.Run(async () => { await Task.Delay(5000); return 5; });
        }

        // Called from multiple threads
        public async Task<int> Bar(int i)
        {
            return (await _task) + i;
        }
    }

    class Program
    {
        public static void Main(string[] args)
        {
            Foo foo = new Foo();

            List<Task> tasks = new List<Task>();
            foreach (var i in Enumerable.Range(0, 100))
            {
                tasks.Add(Task.Run(async …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous thread-safety async-await

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

标签 统计

async-await ×1

asynchronous ×1

c# ×1

thread-safety ×1