我必须建立在C双核处理器模拟器(它实际上是一个多级存储器仿真,高速缓存L1 / L2,块取代,等等)。事情是,我有一个很难搞清楚的方式到核心(这我编程时,如线程)同步。任何想法如何,我可以做一个全局时钟?我应该从线程子进程改变? 由于事先

有帮助吗?

解决方案

这么多的选择在这里:因为你可能最终达到支持多线程复杂的相互作用,你可能要考虑使用的“虚拟时钟”有消息传递“总线” 。通过这种方式,你有更多的时间专注于核心功能,而不是调试控制同步逻辑...

使用这种技术,你可以建立一个状态机(请参阅 这里 )每“演员”线程(最坏情况)和少担心互斥/条件。一旦你有了这个基础,你就可以搞定显示中游的情况下(例如,“我忘了这个细节......不用担心,只需添加一个状态在这里......不必再-shuffle我的互斥)。

另外,由于这样做模拟是所有关于“虚拟时间”(因为不能运行实时!),则具有基于“虚拟时钟”的基部结构抽象问题到适当的水平。

其他提示

您可以有一个时钟线加N处理器线程。时钟线可以明确地使每个处理器线程调用,使1个处理步骤。每个处理器线程获取从时钟线程doStep()通话;它使一个步骤,然后把控制返送给时钟线。

您也可以随机在其中的处理器线程被称为做的步骤,使你更容易抓住漏洞在客户端代码的顺序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top