exch4nge

exch4nge

V2EX 第 30085 号会员,加入于 2012-11-29 14:47:49 +08:00
根据 exch4nge 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
exch4nge 最近回复了
18 天前
回复了 nekoharuya 创建的主题 程序员 有人对游戏 ai 设计感兴趣无
不换语言的话,那就先上多线程吧
按理来说这种情况编译器应该有 warning 的,我也没环境无法确定,也可能是用参数忽略掉了这种 warning ,也可能是编译过程有大量 warning 输出大家都不看。如果这版本 gcc 真没有(可能性很小)那建议升级或换 clang 。
23 天前
回复了 Reiouf 创建的主题 程序员 Lock-free-Stack 算法探讨
贴的第一个代码不对,贴的第二个跟链接里的代码是对的。原因上面 @piaodazhu @C47CH 说了,虽然重复我也说一下。

贴的第一个:
- head 已经在 compare exchange 修改了,不过 new_node 的 next 没设置,导致断了
- 用 compare_exchange_weak 就好,不过我不确定你用的 memory order 对不对
- 这里 length 更新会比实际慢,所以会有差异
- while 里的 old_head = head.load(std::memory_order_release); 除了第一次有用外,没什么用,应该放在 do 上面

贴的第二个,解答你的问题。
如果线程 A 如果执行到 @2 被休眠,如果其他 push 线程 直接执行 @2 ,@3 修改了 head atomic 值,线程 A 不就一直卡死了吗?
不会卡死,因为 compare_exchange_weak 会失败,同时会设置 new_node->next 的值。所以是对的。

4L 你的问题:new_node->next = old_head 放到 while 循环里后逻辑是对的。其它问题参考上面的问题列表
72 天前
回复了 Symbo1ic 创建的主题 C++ 求助,想获得一些关于 C++学习的建议
@Symbo1ic
raw 用在能确定指针有效的情况,指针指向对象的生命周期肯定比当前类对象要长,能不用就不用。

其余不用共享的用 unique ,明确表示有所有权。需要所有权转移也用,函数参数返回值等。
(不用转移所有权,但用来延后初始化的场景建议用 optional )

share_ptr 共享用,随处都用的话得避免循环应用,可以用 weak 解决。有时也用 atomic store load 来做原子操作多线程安全切换里面的对象

内存使用大小上,share 最大,有 custom delete 的 unique 稍微大,没有的 unique 跟 raw 一样
性能上 share 最差,unique 与 raw 接近
116 天前
回复了 catfly 创建的主题 程序员 新 bing 你们有预约成功的吗?
收到 bing 通知邮件说可以访问 new Bing 了,不过点开链接,好像跳到一个错误页面后快速跳到老 bing 页面,没有 chatGPT
192 天前
回复了 rayduan 创建的主题 程序员 tabnine 黑五半价
看错了,免费的提示最多一行
192 天前
回复了 rayduan 创建的主题 程序员 tabnine 黑五半价
@Purelove 换个 Code Autocomplete 插件试试,也是 tabnine 的客户端。官方的插件好像会跟 rust-analyzer 打架,提示出不来
314 天前
回复了 fstar 创建的主题 程序员 TCP 关闭连接的不同版本,哪个才是对的?
这三个那里不同?
分着理解吧,unique 就是判断引用计数是不是一,即没有其它 shared ptr 只向同一个对象。

reset 就是指向一个新的对象,原来的引用计数减一可能会释放。


那段代码做的事情就是,如果不是 unique 那就复制一份,保证 p 指向的是 unique 的,做+=操作
2022-04-01 00:26:37 +08:00
回复了 java253738191 创建的主题 程序员 面试题: C++怎么实现热更新内存数据?
@ipwx 多线程情况下修改 shared_ptr 应该是不安全的,建议用 std::atomic_load 与 std::atomic_save 替代修改与读的操作。
关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2444 人在线   最高记录 5634   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 04:25 · PVG 12:25 · LAX 21:25 · JFK 00:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.