6-317-抖音-多线程题:10个线程,每个线程加1w次,最终让long类型的num实现加到10w

作者: 十二岁的闰土分类: 计算机技术 发布时间: 2023-11-16 07:36:48 浏览:2354 次

6-317-抖音-多线程题:10个线程,每个线程加1w次,最终让long类型的num实现加到10w

RustCargoTokio:
mutex一般比原子变量快。原子类型++很多情况都是只是一条指令,为什么反而慢呢?不知道为什么,但是mutex就是更快。不应该用thread——local或者栈变量,这肯定性能好,但这是不符合题意的,就是10个thread抢一个锁,然后++全局变量,这性能不低的。 不知道哪本书说的原子变量不一定更快,但是不会比加锁慢,实际情况确是原子变量可能更慢。原子变量就是写起来容易,不容易错。但是性能可能比一直lock ,++,unlock更差,10个线程,加1万次,lock,unlock,10万次。

【回复】至少linux下,mutex应该是慢很多的。我记得我是用过的。
【回复】回复 @XellinPP :我是m1max,cpp写的
【回复】回复 @RustCargoTokio :如果是多核的arm64的话,应该是原子比锁快的,二者底层原理一致,锁比原子多了一些操作的。在linux 内核下测试可以说毫无争议是原子更快,如果是高级语言的话,就不知道中间怎么处理的。
御坂MM是我的:
是因为我什么都不懂吗?我感觉说了个寂寞。。。。

AshBound:
分析了一下,感觉这个版本也有概率出bug吧。要保证不出问题,感觉应该开一个cache对齐的数组,每个线程累加到对应索引,最后join完之后 单线程去累加最终结果。

海棠依旧talking:
哥,网上都说现在c++死绝了,真的还能找到工作吗

【回复】咋说呢,因为c++岗位相比java,js这些岗位少很多
【回复】不谈入职后,现在有很多面试还是基于C++展开的,进了会牵扯到转方向。
余渔鱼_:
这种临界区极小的情况用自旋锁是不是性能好一点

内核 服务端 死锁 快手 面试 美团 面试题 线程 互斥锁 原子变量

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!