线程与共享的麻烦事.

import std;

class S {
    SysTime a;
    shared SysTime b;

    synchronized shared void setIt(SysTime t) {
        // What I used to do
        cast () a = t; // Here you need to cast away shared anyway
        cast () b = t; // so it doesn't make any difference.

        // What I'll do from now on
        with(cast() this) { // You only notice the difference when you cast away `shared` from `this`
            a = t;
            // b = t; // FAILS
        }
    }
}

Arafel:
`有时您想封装"共享"逻辑.
例如,类(构)可能是跨多线程中存储共享数据线程安全容器,每个线程将获得该容器的共享引用,由该类在内部管理所有同步.
这样,我只将整个容器类标记为"共享",而不必标记每个方法,实际上没有非共享方法.
现在我知道,不应该共享成员,因为它仅在从`本`丢弃共享时显示.
如仅实例化共享变量,则所有成员(包括非共享)也将自动共享.以前,我只从单个成员中删除共享,所以未注意到
`

posted @   zjh6  阅读(7)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示