目录
1.核间同步机制:
共用Timer + 硬件中断+Notify:
具体实现:同步主核心配置一个共用Timer,从核绑定共用timer 对应的中断,主核等待全部从核通过Notify发出到达同步点的通知,到达同步点主核开启timer,所有从核都会触发中断,从而达到同步的效果。
该方案可以拓展成没有主核心参加的同步,不同核心进行不同的同步动作等(例如123 ,456分别进行同步)。
在设计函数的时候应该考虑:
- 同步核心连接状态的检测(Notify模块需要连接才能使用);
- 主核与当前核心的关系;
- 同步核心发出的Notify中断没有被响应的情况;
- 同步接口如何对传入的核心参数进行解析。、
- Timer使用之后需要马上关闭;
- 主核没有参与的情况下如何同步。
可以参考下面我的代码:
在该机制下核间传递消息可以通过SharedRegion模块实现。
2.使用共享内存实现核间同步
把指定变量放到共享内存上,通过各个核心对共享内存上的值进行反复查询,确定同步完成;:
- 缓存一致性问题;
- 对共享内存的访问是有总线仲裁机制的,如何确保清除标志位时别的核心已经完成同步;
3.核间通过IPC中断+共享内存 实现核间通信;
将不同核心的变量映射到统一地址上,使用IPC对核心进行通知通信核心,将消息取出。
4.将变量或者函数映射到固定位置的方法:
- 在内存中新建Segment
- 将section映射到Segment,
- 将代码或者函数映射到section。有如下两种方法