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

cpu无法处理同时读写吗?

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

数据错误的原因

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

crash的原因

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

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

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

你可能感兴趣的:(多线程读写内存导致crash的思考)