paulQuei / gitment

Comment System for qiangbo.space
0 stars 0 forks source link

C++ 并发编程(从C++11到C++17) #89

Open paulQuei opened 4 years ago

paulQuei commented 4 years ago

https://paul.pub/cpp-concurrency/

C++ 并发编程(从C++11到C++17), C++, Thread,Concurrency,Synchronize,Lock,Mutex, 自C++11标准以来,C++语言开始支持多线程模型。借助多线程模型,我们可以开发出更好的并发系统。本文以C++语言为例,讲解如何进行并发编程。并尽可能涉及C++11,C++14以及C++17中的主要内容。

liheyi960622 commented 4 years ago

感谢博主,讲的很清晰

peguine commented 3 years ago

谢谢,讲解的很细致。

jim-yefeng commented 3 years ago

sort(execution::par, copy2.begin(),copy2.end()); // ⑥ 并行排序没有并行执行 我在mac上用的gcc 10编译的,运行结果如下, Sequenced sort consuming 9151ms. Parallel sort consuming 9171ms. Parallel unsequenced sort consuming 9190ms.

oncealong commented 3 years ago

大佬,好文。可以转载么?会标明出处

huqianshan commented 3 years ago

收益颇丰

afinal commented 3 years ago

感谢博主

ZaccurLi commented 3 years ago

Mark!点赞优秀!

Renleilei1992 commented 3 years ago

博主讲得非常清晰和详细,系统串联起来了这些知识点,回顾下来也收益匪浅,感谢!

Maxing1997 commented 3 years ago
 bool transferMoney(Account* accountA, Account* accountB, double amount) {
    lock_guard guardA(*accountA->getLock()); // ①
    lock_guard guardB(*accountB->getLock());

lock_guard后面要加上<mutex>

SheldonDeeper commented 2 years ago

Thanks a lot.

Felix2017 commented 2 years ago

谢谢博主,写的真好,希望可以成为博主一样优秀的人!

HongfeiXu commented 2 years ago

Bank totalMoney的输出有时候是200,有时候不是。但不管怎样,即便这一次不是,下一次又是了。 原因感觉是在totalMoney的时候,另一个线程可能在跑transferMoney,跑到accountA->changeMoney的时候,accountB的金额没有变化,所以总金额会有出入,但当accountB->changeMoney执行之后,totalMoney又对了。 但不知道要怎么解决这个问题,求教 :)

ouyangpeng commented 2 years ago

大佬,已转载到 https://ouyangpeng.blog.csdn.net/article/details/123846041 ,标明出处! 如果不让转载,我删除!

Sunnyzhr commented 2 years ago

非常清晰,厉害👍

AA1HSHH commented 1 year ago

谢谢!有收获。

shengdongyc commented 1 year ago

请问关于并发编程这块儿,大佬看的什么相关资料呀

LiangJiSama commented 1 year ago

使用conditional_variable的时候由于在读的时候可能发生写的情况,会导致中间数据不一致,但是如果在读写过程中加锁,又没有使用conditional_variable的意义,是不是没有什么办法使用了conditional_variable又不影响性能?

huanGninGshuanG commented 1 year ago

Bank totalMoney的输出有时候是200,有时候不是。但不管怎样,即便这一次不是,下一次又是了。关于这一点,请读者自行思考一下为什么,以及如何改进。

这里是因为transferMoney函数没有加锁,存+取不是原子的,可能在中间get了,但是加了锁又会死锁,怎么改进呢

hg-gong commented 1 year ago

感谢博主! 博主高屋建瓴地普及了并发编程入门的所需要知道的相关知识、API需求的由来、知识之间的联系。并通过代码例子以及简洁和准确的注释来展示从知识->API->代码这一实现过程。并且在知识的连接处,明确地点出新手的困惑点,并且留下相关的问题,帮助深入思考。毫不夸张的说,是我读到的C++并发编程中最好一篇科普文章

SighingSnow commented 1 year ago

感谢博主

sdcgvhgj commented 11 months ago

讲的太好了,感谢博主,解决了很多疑惑。C++并发的资料查了很多,终于搞懂了。

koi-boy commented 5 months ago

喜欢这样的文章。nice~