V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cnbatch  ›  全部回复第 4 页 / 共 73 页
回复总数  1446
1  2  3  4  5  6  7  8  9  10 ... 73  
@newma
有关联的是 atomic<shared_ptr<T>>变量本身,不是 shared_ptr 之间

如果不用 atomic ,那就:

共享变量:
shared_ptr<Description> share_desc_ptr;

线程 1:
shared_ptr<Description> desc_ptr = share_desc_ptr;

线程 2:
share_desc_ptr = make_shared_ptr<Description>();

这里用到了 operator=,按照 cppreference 的描述,会发生数据竞争。所以要改成:


C++20 之前:

共享变量:
shared_ptr<Description> share_desc_ptr;

线程 1:
shared_ptr<Description> desc_ptr = atomic_load(&share_desc_ptr);

线程 2:
atomic_store(&share_desc_ptr, make_shared_ptr<Description>());


C++20 起:

共享变量:
atomic<shared_ptr<Description>> share_desc_ptr;

线程 1:
shared_ptr<Description> desc_ptr = atomic_load(&share_desc_ptr);
// 或者 shared_ptr<Description> desc_ptr = share_desc_ptr; 自动调用 atomic 的 operator=

线程 2:
atomic_store(&share_desc_ptr, make_shared_ptr<Description>());
// 或者 share_desc_ptr = make_shared_ptr<Description>(); 同样自动调用 atomic 的 operator=
@minami 说实话,如果 MSVC 支持多系统,全用 MSVC 也不是坏事
@newma
@changnet cppreference 是这么说的:
https://en.cppreference.com/w/cpp/memory/shared_ptr/atomic

If multiple threads of execution access the same std::shared_ptr object without synchronization and any of those accesses uses a non-const member function of shared_ptr then a data race will occur unless all such access is performed through these functions, which are overloads of the corresponding atomic access functions (std::atomic_load, std::atomic_store, etc.).

如果多个执行线程无同步地访问同一 std::shared_ptr 对象,而其中由任何访问使用了 shared_ptr 的非 const 成员函数,那么就会发生数据竞争,除非所有这种访问都通过这些作为对应原子访问函数( std::atomic_load 、std::atomic_store 等)重载的函数进行。

non-const 的成员函数是:
reset()、swap()、operator=

我的例子刚好就是一边换指针、一边读指针,按照 cppreference 的说法,应当使用 atmoic 操作。
@bruce0 刚看了下 cppreference ,显示还没支持,Apple Clang 总是慢一拍吧
@felixlong 多线程读写会用到,放进 atomic 就不需要再用 mutex 了。

举个例子,atomic<shared_ptr<Description>>,用来保存一段文字描述,修改时直接 make_shared<Description>,其他线程读取时调用 load() 成员函数或者用 std::atomic_load(),可以确保修改与读取互不干扰。对于时间敏感度不高的场景会很方便,起码不会死锁。
@Coelacanthus 刚用 reportbug 命令向 Debian 提交了,暂时还没什么反应,就连编号都还没生成。
不太熟悉他们的流程,看来只能继续等待
system()本质是运行命令行的命令,所以 system("pause")意思就是在 Windows 调用 pause 命令

如果是想通用一点,那就把 system("pause")替换成
printf("Press enter to continue");
int c = getchar();
蛋白粉无非就是从牛奶、大豆分离出蛋白质,算不上什么“科技狠活”。
真正的“科技狠活”是所谓的 cycle ,也就是健美圈常见的注射高剂量雄激素,国内俗称“上科技”。
无论是 Delphi 还是 C 语言开发出来,颜色如何设置都跟“C 语言”无关,lisxour 已经写得很清楚了

如果并不是《热血传奇》这款游戏,那你应该更要讲清楚是具体哪一款游戏,最好有截图,要不然大家根本不知道是哪个,毕竟叫做“传奇”的游戏有十几款之多。
好的,满足下 OP 的好奇心
https://github.com/cnbatch/

请低调观摩
这是 OP 前一个相关提问:
/t/1070839

游戏名称叫《热血传奇》,我看了下 Wikipedia ,介绍写着是用 Delphi 做的,并不是用 C 语言开发
https://zh.wikipedia.org/wiki/%E7%83%AD%E8%A1%80%E4%BC%A0%E5%A5%87

C 语言输出带颜色文字明显跟 OP 的提问无关

随手搜索一下就能找到答案
https://www.google.com/search?q=%E7%83%AD%E8%A1%80%E4%BC%A0%E5%A5%87+%E9%BB%84%E8%89%B2%E5%AD%97

https://cn.bing.com/search?q=%E7%83%AD%E8%A1%80%E4%BC%A0%E5%A5%87+%E9%BB%84%E8%89%B2%E5%AD%97

如果不能,那么应该换个方式提问。可以参考 #5 的方式,然后正文写“我已经试过使用 XXX 教程的方法,还是不行”
74 天前
回复了 GensKinsey 创建的主题 职场话题 早 7 晚 4 和早 10 晚 7 哪个更好
两者二选一的话,我一定选早 10 晚 7 ,万一需要加班,依然能够拥有充足睡眠。

如果不用加班又想早起,早 10 晚 7 照样可以早起,多出来的时间用来举铁或者慢跑,上班时神清气爽。

晚 7 下班、拒绝早起,那么 7 点下班去举铁,8 点左右练完再吃晚餐,可以确保整个晚上不饿,避免夜宵。
旧版本用旧式注册码,新版本改用新样式注册码,这也能解决问题吧
77 天前
回复了 shenguna 创建的主题 宽带症候群 请问如何主动进入运营商小黑屋?
看起来只能精细化限速

Wireshark 观察一下,看看这几个国产货(尤其是腾讯)的大上传时上传到哪里,对应域名是什么,走 UDP 还是 TCP 。

然后针对性地限速

迅雷可以扔进虚拟机,限速更容易
有些用户就是喜欢经典版本内置程序。

Win10 时期 UWP 计算器替换了经典计算器,不少用户想方设法都要从 LTSC/LTSB 提取出来换回去(两套共存),从 2015 年持续到今年都还是有人要用经典版(但不是删掉 UWP 版):
https://www.ithome.com/0/171/326.htm
https://www.ampc8.com/thread-23708-1-1.html
http://wuyou.net/forum.php?mod=viewthread&tid=417874
http://wuyou.net/forum.php?mod=viewthread&tid=440536

Win11 这么做,不排除是有企业用户向微软反馈,要求预装经典版本的内置程序的同时不许被新版覆盖
@cs5117155
多核:高吞吐
高频:低延迟
少核:低吞吐
低频:高延迟
留书面证据时,还要明确写出你的 named pipe 在先、他的 socket 随后推出,这个时间关系很重要。

顺便把楼上各位提到的 Windows 为什么要用 pipe 的理由说清楚,重点讲述 Windows 的安全特性跟 Android 的不一样,只能这样做。

如果对方耍无赖,那就直接怼回去:我当初开始写的时候,你干嘛不把标准提出来?为什么你拒绝事先把话说清楚,非要在完工的时候才把“标准”列出来?你这样做会导致工期延误,造成的损失是不是你来承担?如果因为安全特性不同,按照你的标准干活后导致出现安全隐患,是不是你负责? release 给客户前,要不你来做安全验收,一旦出了事你也得背锅。
(语气语句可以适当调整)
那就开着 BT ,满足下那些刷下载量的 PCDN 用户,帮助正常 BT 用户减轻负担:
/t/1029736
/t/1058238

这回算是对等满足了
如果需要使用 C/C++、C# 做开发,尤其是这几个都需要兼顾,那么 VS 是最方便的选择了,一个 IDE 就能覆盖需求
1  2  3  4  5  6  7  8  9  10 ... 73  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4792 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 05:39 · PVG 13:39 · LAX 21:39 · JFK 00:39
Developed with CodeLauncher
♥ Do have faith in what you're doing.