zoukankan      html  css  js  c++  java
  • COPIED VALUE 的本质意义

    定义一个值对象类型,使其实例是可复制的。当它用来和另一个线程通信时,确保复制该值

    此模式主要用于解决在多线程中没有必要进行同步的数据对象的传递——使用值传递方式,即可复制。

    故没有加锁开销,每一个副本可以随意改变,但是改变只针对副本本身发生,可以看作原型模式的另一种存在。

    C++中的复制构造函数即为此而生,

    C#中的Struct就是值对象类型的,

    而Java则需要手动进行对象的副本。

    简单示例,可以看出struct直接赋值之后得到的对象是一个副本,这是Copyed Value的本意

    using System;
    
    namespace ConsoleApplication1
    {
        struct CopyedValue
        {
            public int Age { get; set; }
            public string Name { get; set; }
        }
        class Program
        {
            static void Main(string[] args)
            {
                CopyedValue cv = new CopyedValue()
                {
                    Age = 25,
                    Name = "daniu"
                };
    
                var cv2 = cv;
                cv2.Name = "daniu2";
                cv2.Age = 26;
    
                Console.WriteLine(cv.Age);
                Console.WriteLine(cv.Name);
                Console.WriteLine(cv2.Age);
                Console.WriteLine(cv2.Name);
            }
        }
    }

     

  • 相关阅读:
    Android APK安装过程介绍
    Android Linux自带iptables配置IP访问规则
    海康视频监控---Demo
    Go之获取Windows下文件是否隐藏
    Go之go与channel组合使用
    Go并发编程(四)
    Go错误处理(二)
    Go面向对象(三)
    判断两端日期是否重合
    Sql分页存储过程
  • 原文地址:https://www.cnblogs.com/pengzhen/p/3579415.html
Copyright © 2011-2022 走看看