码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • d共享左值


    原文

    shared TT[] a;
    T processArray(T)(ref T[] p){/*...*/} 
    //函数在参数上调用`.保留`.意思是`void`为函数`返回类型`
    a.processArray;
    //不能从`!()(shared(T[]))`推导.
    
    • 1
    • 2
    • 3
    • 4
    • 5

    即使更改函数为仅接受共享参数,.reserve也不支持共享,因此如果不更改类型或使用__gshared,则无法使用该函数.
    除了使用指针和强制(用processArray(*(cast(Unqual!TT*)&a))转换,不理想)之外,有没有更好的方法来不转换为右值的转换左值类型?(因为编译失败,直接强制转换似乎会创建右值.)
    谢谢

    .reserve无法正确支持shared,因为在整个程序中,它不知道如何正确同步切片及其内容.
    一般,丢弃shared让编译器停止抱怨,完全违背shared的目的,与__gshared一样不安全.

    相反,必须自己,如使用core.sync.mutex来同步.只有正确同步,才可丢弃shared.这是shared的目的,且与__gshared的唯一区别:转换时,记住要同步.
    一般,应该同步整个shared代码保护区域,同步单个操作(就像单独同步.reserve)一般是错误的,或更确切地说,是不够的.

    同步必须保证:当线程写入数据时,它具有独占访问权限.但是,只要此时不写入数据,多线程同时读取数据是安全且快速的.core.sync.rwmutex可以用来实现该优化.

    (可用无锁算法(请见core.atomic)或其他更复杂的方案来设计支持多个同时写入算法,这很难,有时不必).

    最后,如果只需要写入一次数据,之后只会读它,则可跳过所有这些混乱和复杂性,只需从非共享容器中的单线程准备数据,然后使用cast(immutable)(如果只有一个现存引用)或.idup(否则).不必同步immutable数据.
    *(cast(Unqual!TT*)&a),这是重新强制转换左值的正确方法(前提是生成类型与源类型兼容).
    (因为编译失败,直接转换似乎创建了右值.)
    是的,直接转换应该产生右值.(虽然,可用自定opCast义来去掉它.)

  • 相关阅读:
    生成迷宫的算法
    Springboot企业项目管理系统的设计与实现c7ca1计算机毕业设计-课程设计-期末作业-毕设程序代做
    百看不如一练系列 32个python实战项目列表,得不到就毁掉
    初步认识系统调用
    分布式id生成(1)
    【深度学习】(问题记录)<对一个变量求梯度得到什么>-线性回归-小批量随机梯度下降
    【MATLAB源码-第81期】基于matlab的polar码三种译码算法比较(SC,SCL,BP)。
    Java Integer.toBinaryString()方法具有什么功能呢?
    2022年运动品牌推荐,双十一运动装备推荐
    Arthas的安装使用笔记
  • 原文地址:https://blog.csdn.net/fqbqrr/article/details/126280162
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号