none
请问Interlocked中的操作可以与属性配合使用么 RRS feed

  • 问题

  • 是这样:

    我打算使用这样的语句: 

    int x;
    Queue queue;
    Interlocked.CompareExchange(ref x, 1,queue.Count);

    但是这样的程序安全么?

    我希望他是:

    //lock start
    int cnt = queue.Count;
    int old = x;
    if (x == 1) x = cnt;
    return old;
    //lock end

    但是他会不会变成:

    int cnt = queue.Count
    //lock start
    int old = x;
    if (x == 1) x = cnt;
    return old;
    // lock end
    还是说这是个依赖编译器的问题……

    谢谢了……


    2013年2月25日 4:48

答案

全部回复