线程与共享的麻烦事.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值