我主要的疑惑来自函数处理,函数编译后,最终变成计算机指令,以及一个函数地址
函数地址:
指令一
指令二
指令三
指令N由于CPU不是真正的多任务,是按时间一个个的去分配给各个线程,由于我只有一个对象,那么不管多少个线程去调用对象的某个函数,最张还是去访问的还是同一个函数地址(这样的理解是否对?)如果我上面的理解是对的,那会不会当第一个线程运行到指令三的时间,CPU切换到第二个线程,第二个线程也调用同一个函数,又从指令一执行,把第一个线程调用时的数据给冲掉了,造成结果的不可预知?如果不是这样,那是如何处理的保证不出错?
函数地址:
指令一
指令二
指令三
指令N由于CPU不是真正的多任务,是按时间一个个的去分配给各个线程,由于我只有一个对象,那么不管多少个线程去调用对象的某个函数,最张还是去访问的还是同一个函数地址(这样的理解是否对?)如果我上面的理解是对的,那会不会当第一个线程运行到指令三的时间,CPU切换到第二个线程,第二个线程也调用同一个函数,又从指令一执行,把第一个线程调用时的数据给冲掉了,造成结果的不可预知?如果不是这样,那是如何处理的保证不出错?
编程菜鸟学堂QQ群144648357
只要在处理写对象时做一个写同步就行了。
但堆是各线程共用的,所以一定要搞清楚堆和栈,下一步再考虑是否有必要进行同步,因为同步是一个并变串的工作,影响效率。