gpt4 book ai didi

c++ - 当人们谈论并发时, "transaction"是什么意思?

转载 作者:搜寻专家 更新时间:2023-10-31 02:19:55 25 4
gpt4 key购买 nike

人们常说“写无锁程序很难”,“写出正确的无锁程序更难”,“当你做并发编程时,你需要从事务的角度来思考”。

交易到底是什么意思?

我理解在执行一个程序时,操作系统调度器可能会让程序多次进入和退出CPU,而程序被调度器暂停的确切代码位置是不确定的,这使得并发编程变得困难,因为多个线程之间的执行流程可能会以各种方式交错。

那么事务是指单条CPU指令还是在同一个CPU入口执行的指令?例如,在下面的代码中

 x = x1 + x2 + x3;

有没有可能x1 + x2是在一个CPU entry中计算的,(temporary for the sum of x1, x2) + x3是在一个CPU entry中计算的另一个 CPU 条目,=x 的赋值是在第三个 CPU 条目中完成的?

最佳答案

这就像在数据库中一样。一些指令,应该只立即执行(如)而不会中断。 “原子操作”是另一个名称。 https://www.threadingbuildingblocks.org/docs/help/tbb_userguide/Atomic_Operations.htm

对于如何实现交易没有严格的规定。最直接的方法是锁定。无法保证 CPU 单元。所以实际的答案是——是的,这是可能的(或者至少你应该这样对待它)。而且相同的 CPU 仍然不能保证任何事情,因为线程 hell 在单个 CPU 单元机器上大致相同。

关于c++ - 当人们谈论并发时, "transaction"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33323815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com