Loading

线程操作

Interlocked

 为多线程提供原子操作。

方法:

  /******************************
         * Add
         *    Implemented: int
         *                         long
         *****************************/
        //对两个 32|64 位整数进行求和并用和替换第一个整数,上述操作作为一个原子操作完成。返回结果:location1的新值。
        public static int Add(ref int location1, int value)
        public static long Add(ref long location1, long value)
     /******************************
         * Increment
         *   Implemented: int
         *                        long
         *****************************/
        // 以原子操作的形式递增|递减指定变量的值。返回结果:location1的新值。
        public static int Increment(ref int location)
        public static long Increment(ref long location)
        /******************************
         * Decrement
         *   Implemented: int
         *                        long
         *****************************/
        // 以原子操作的形式递增|递减指定变量的值。返回结果:location1的新值。
        public static int Decrement(ref int location)
   /******************************
         * CompareExchange
         *    Implemented: int
         *                         long
         *                         float
         *                         double
         *                         Object
         *                         IntPtr
         *****************************/
        //比较指定的location1和comparand是否相等,如果相等,则将location1值设置为value。返回结果:location1 的原始值。
        public static extern int CompareExchange(ref int location1, int value, int comparand);
        public static extern Object CompareExchange(ref Object location1, Object value, Object comparand);
        public static extern IntPtr CompareExchange(ref IntPtr location1, IntPtr value, IntPtr comparand);
        private static extern void _CompareExchange(TypedReference location1, TypedReference value, Object comparand);
 /******************************
         * Exchange
         *   Implemented: int
         *                        long
         *                        float
         *                        double
         *                        Object
         *                        IntPtr
         *****************************/
        // 以原子操作的形式,将location1的值设置为value,返回结果:location1 的原始值。
        public static extern int Exchange(ref int location1, int value);
        public static extern Object Exchange(ref Object location1, Object value);
        public static extern IntPtr Exchange(ref IntPtr location1, IntPtr value);

 

 

posted @ 2018-12-06 16:44  奔跑石头  阅读(100)  评论(0)    收藏  举报