我有一個需要可視化的粒子系統。但是可視化對模擬本身應該沒有任何影響。目前這種情況發生的方式是讓第二個線程在沒有任何同步的情況下讀取粒子系統的狀態。這當然會導致模擬顯示一些小故障,但這不是問題。併發內存訪問減速系統
然而,似乎發生的事情是渲染渲染速度越快,粒子系統變得越慢。測量的模擬時間步驟會出現尖峯,平均幾乎翻倍。我相當肯定這是由於渲染器從另一個線程訪問粒子系統使用的內存。
現在的問題是,是否有可能以較小的幅度擾亂粒子系統?可視化的準確性根本不是問題。理論上我可以設想一些方法來指示編譯器渲染器是純粹只讀的和/或它不需要「最近」版本的數據。但我不知道如何解決這個問題。
PS。語言:C++,IDE:Visual Studio
PSS。當然,保持渲染器的FPS較低已經有助於減少內存訪問,但測量的仿真時間步驟仍然會增加並減緩。
你爲什麼認爲這純粹是由於內存訪問而不是來自渲染線程的額外負載? –
當渲染thead在繁忙的循環中沒有渲染(因此不訪問任何數據)時,時間步不受影響。 – Aedoro