美文网首页
多线程读写内存导致crash的思考

多线程读写内存导致crash的思考

作者: 我是榜样 | 来源:发表于2020-09-29 19:35 被阅读0次

    cpu无法处理同时读写吗?

    不是,cpu对同时读写无所谓。cpu读写内存是通过数据总线操作的,我们只有一个数据总线。cpu并不关心你的程序是不是在同时读写同一块内存。在cpu的角度,并没有线程的概念。都是基本的数据读写操作。
    但是我们自己需要关心,因为可能读写操作不是原子操作,会有数据错乱的问题。

    数据错误的原因

    由于同时2个线程写同一大块内存,2个线程可能交错执行写入操作。最终导致数据结果,不是我们想要的结果。

    crash的原因

    由于数据错乱后,程序运行异常,可能有野指针的访问,等错误,最终会crash。

    多线程读同一块内存,会导致异常吗?

    不会,因为只是读取数据,并不会产生错误的结果,即使交错执行读取,最终结果也是正确的。
    所以有时,我们会先初始化一块内存,在程序运行过程中有很多线程去读取这块内存,这种用法并没有错误。不需要加锁。

    相关文章

      网友评论

          本文标题:多线程读写内存导致crash的思考

          本文链接:https://www.haomeiwen.com/subject/rozeuktx.html