C++操作数据库的时候,互斥锁设置的默认互斥时间设置错误。导致了有可能会同事进行两个查询或者插入操作。
这个时候mysql数据库就会崩溃,
请问这个时候的崩溃原理是什么。

解决方案 »

  1.   

    非原子操作,汇编执行的时候会串码,比如说查询的第一条汇编指令执行后,就执行了插入的第一条汇编,然后再执行查询的第二条。这样寄存器中数据类型未知,如果之前是表示一个内存地址的,被覆盖后表示了某个int值,那么访问内存时就容易崩溃。
      

  2.   

    那我想说,就是mysql不支持并发操作
    这东西就是本机自娱自乐的,毕竟不要钱么
      

  3.   


    你看清楚楼主在说什么之后再喷好么,楼主的意思就是2个读写事件同时发生为什么程序会崩溃。唉,楼主本身描述的就很模糊,如果读写同时崩溃那也是内存使用的问题,怎么扯到寄存器上了?
    你说的指令串码是多级流水线处理还是怎么回事?你先搞清楚寄存器是什么,怎么用再说吧。
    不懂就不要误导人,害人害己!照你这个逻辑理论,操作系统一分钟内就要崩溃个成百上千次了。你为什么每次都不看清楚在喷呢,寄存器是笔误,6楼已经更正。
    线程切换打断非原子操作,如a=b,那么需要mov eax,a  mov b,eax 需要2条汇编,那么线程切换就可能在2条之间。
    如果你懂,你可以给出正确答案,讲这些没用的不可笑么。喷别人就显得自己牛了么,你需要用行动证明自己才行。
      

  4.   


    你看清楚楼主在说什么之后再喷好么,楼主的意思就是2个读写事件同时发生为什么程序会崩溃。唉,楼主本身描述的就很模糊,如果读写同时崩溃那也是内存使用的问题,怎么扯到寄存器上了?
    你说的指令串码是多级流水线处理还是怎么回事?你先搞清楚寄存器是什么,怎么用再说吧。
    不懂就不要误导人,害人害己!照你这个逻辑理论,操作系统一分钟内就要崩溃个成百上千次了。你为什么每次都不看清楚在喷呢,寄存器是笔误,6楼已经更正。
    线程切换打断非原子操作,如a=b,那么需要mov eax,a  mov b,eax 需要2条汇编,那么线程切换就可能在2条之间。
    如果你懂,你可以给出正确答案,讲这些没用的不可笑么。喷别人就显得自己牛了么,你需要用行动证明自己才行。你不也自己承认有错误?本来就是指出你的错误,这也算喷?
    楼主的问题完全位于上层代码逻辑,无非就是内存使用的问题,你非要搬出寄存器来解释,你解释通了吗?我怎么没看出来?汇编代码的交叉执行怎么会引发异常?现在的CPU都是这样执行,多级、预估如果这样也会引发异常,还是那句话,操作系统一分钟要崩溃个几千次了,你怎么不想想。
    我为什么要证明自己怎么怎么样,闲的蛋疼吗?
    你这么不淡定,我懒得说什么。
      

  5.   


    你看清楚楼主在说什么之后再喷好么,楼主的意思就是2个读写事件同时发生为什么程序会崩溃。唉,楼主本身描述的就很模糊,如果读写同时崩溃那也是内存使用的问题,怎么扯到寄存器上了?
    你说的指令串码是多级流水线处理还是怎么回事?你先搞清楚寄存器是什么,怎么用再说吧。
    不懂就不要误导人,害人害己!照你这个逻辑理论,操作系统一分钟内就要崩溃个成百上千次了。你为什么每次都不看清楚在喷呢,寄存器是笔误,6楼已经更正。
    线程切换打断非原子操作,如a=b,那么需要mov eax,a  mov b,eax 需要2条汇编,那么线程切换就可能在2条之间。
    如果你懂,你可以给出正确答案,讲这些没用的不可笑么。喷别人就显得自己牛了么,你需要用行动证明自己才行。你不也自己承认有错误?本来就是指出你的错误,这也算喷?
    楼主的问题完全位于上层代码逻辑,无非就是内存使用的问题,你非要搬出寄存器来解释,你解释通了吗?我怎么没看出来?汇编代码的交叉执行怎么会引发异常?现在的CPU都是这样执行,多级、预估如果这样也会引发异常,还是那句话,操作系统一分钟要崩溃个几千次了,你怎么不想想。
    我为什么要证明自己怎么怎么样,闲的蛋疼吗?
    你这么不淡定,我懒得说什么。如果你懂什么是多线程,应该就不会问我这种问题了。多线程共用进程的资源,共用内存在使用过程中被篡改,能不出问题?
    说了寄存器是笔误,你就别死抓着不放了。作为一个严谨的程序猿,希望你能用严谨的知识来证明自己。
    “你解释通了吗?我怎么没看出来?”“怎么会引发异常?”“都是这样执行”这些话怎么看都不合适吧。