线程与共享的麻烦事.
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:
`有时您想封装"共享"逻辑.
例如,类(构)可能是跨多线程中存储共享数据线程安全容器,每个线程将获得该容器的共享引用,由该类在内部管理所有同步.
这样,我只将整个容器类标记为"共享",而不必标记每个方法,实际上没有非共享方法.
现在我知道,不应该共享成员,因为它仅在从`本`丢弃共享时显示.
如仅实例化共享变量,则所有成员(包括非共享)也将自动共享.以前,我只从单个成员中删除共享,所以未注意到
`
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现