小编apr*_*ate的帖子

异步/等待线程安全与内存缓存

我正在查看http://www.albahari.com/threading/part4.aspx中描述的有关内存屏障的部分, 并试图制作"我们真的需要锁定和"下提供的示例的异步/等待版本壁垒"?

public class Program
{
    static void Main(string[] args)
    {
        TestAsync();
        Console.ReadKey(true);
    }

    private static async void TestAsync()
    {
        bool complete = false;
        Func<Task> testFunc = async () =>
        {
            await Task.Delay(1000);
            bool toggle = false;
            while (!complete) toggle = !toggle;
        };

        var task = testFunc();
        Thread.Sleep(2000);
        complete = true;
        await task;
        Console.WriteLine("Done");
    }
}
Run Code Online (Sandbox Code Playgroud)

在没有调试的情况下在释放模式下运行时,程序将永远不会按照它所基于的原始线程示例完成.

但是,由于上下文保存的方式,我在async/await的印象下会阻止这些问题.或者在使用async/await时是否仍然适用所有线程安全规则?

.net c# multithreading caching asynchronous

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

标签 统计

.net ×1

asynchronous ×1

c# ×1

caching ×1

multithreading ×1