多线程事务可行吗? - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
kikione

多线程事务可行吗?

  •  
  •   kikione Nov 2, 2021 3223 views
    This topic created in 1668 days ago, the information mentioned may be changed or developed.

    A 线程异常,事务回滚, B 线程,也要回滚。

    有什么方案吗

    15 replies    2021-11-03 07:27:22 +08:00
    justNoBody
        1
    justNoBody  
       Nov 2, 2021
    主线程等待子线程处理,然后根据线程返回信息已决定是否回滚事务,你看行不行
    /table>
    kikione
        2
    kikione  
    OP
       Nov 2, 2021
    @justNoBody 我觉得可行的
    wolfie
        3
    wolfie  
       Nov 2, 2021
    挺麻烦的。
    A 等待 B 成功、则 A 执行,A 失败 B 还得回滚。
    需要互相通知。
    liuxu
        4
    liuxu  
       Nov 2, 2021
    基于 CSP 模型做事务
    kikione
        5
    kikione  
    OP
       Nov 2, 2021
    @wolfie 确实就是麻烦在这
    GogoGo666
        6
    GogoGo666  
       Nov 2, 2021
    @wolfie Golang 能解决,还很简单
    0uyangtian
        7
    0uyangtian  
       Nov 2, 2021
    golang 中的 errgroup 就很简单
    wolfie
        8
    wolfie  
       Nov 2, 2021
    @GogoGo666 #6
    给个文章链接看一下
    zjsxwc
        9
    zjsxwc  
       Nov 2, 2021
    反正 redis 一个事务对象在多个 goroutine 中共用是不安全的,得加锁

    https://github.com/go-redis/redis/issues/111
    fkdtz
        10
    fkdtz  
       Nov 2, 2021
    相当于分布式事务的场景映射到单机多线程了,只是网络通信变成了线程间通信,可以参考分布式事务的做法。
    fkdtz
        11
    fkdtz  
       Nov 2, 2021
    @fkdtz 好奇楼主这个做法是出于什么考虑,为何不把事务为放在同一个线程里执行?
    haoliang
        12
    haoliang  
       Nov 2, 2021
    第一时间想到 barrier
    kikione
        13
    kikione  
    OP
       Nov 2, 2021
    @fkdtz 只是为了更快一点
    0o0o0o0
        14
    0o0o0o0  
       Nov 2, 2021
    直接在主线程里面等待所有线程结束,之后判断是否全部执行成功,成功就全部提交,失败就全部回滚。不可以吗。。。
    xuanbg
        15
    xuanbg  
       Nov 3, 2021
    @0o0o0o0 可以是可以的,但怎么回滚呢?怕是只能自己写回滚的代码,很麻烦。所以要么不要多线程,要么上分布式事务组件。
    About     Help     Advertise     Blog     API     FAQ     Solana     3160 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 58ms UTC 12:37 PVG 20:37 LAX 05:37 JFK 08:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86