问题1:如上图所示,标示1处用信号量24实现一次八核同步,标示2处用获取八个信号量再次实现同步,这样连续的同步会不会发生冲突 ?或者说只能同步一次?
问题2:如上图所示,标示1、2、3处均使用信号量实现同步。但是在程序运行时会出现有的核CoreID停留在标示2处,而有的核CoreID会停留在标示3处,也就是说有的核没有等待其他的核去获取信号量,而直接执行到下面的语句了,结果如下图所示,这样就无法实现同步。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
问题1:如上图所示,标示1处用信号量24实现一次八核同步,标示2处用获取八个信号量再次实现同步,这样连续的同步会不会发生冲突 ?或者说只能同步一次?
问题2:如上图所示,标示1、2、3处均使用信号量实现同步。但是在程序运行时会出现有的核CoreID停留在标示2处,而有的核CoreID会停留在标示3处,也就是说有的核没有等待其他的核去获取信号量,而直接执行到下面的语句了,结果如下图所示,这样就无法实现同步。
请问您使用的芯片是哪一款?停留在2的时候,是哪几个核停留在2的,始终都是这几个核吗?
使用的是C6678芯片,每次停留在标示2处的核不固定,并不是固定的几个核,具有随机性。请问我这样使用信号量来实现八核同步对不对?
信号量同步是根据信号量的状态来制造同步核之间的相互等待现象。如果你的同步语句不能引起同步核的相互等待相互制约关系的话,同步是无效的。
有个更简单的办法,采用8核共享全局变量 0x1111 1111 实现同步,每个1对应一个核,如果代码运行到这个位置,该标志就置1,。
全部为1时,才继续向下运行
这种方法与messageQ,Notify,硬件信号量同步,那种效率最高?