因此,我開發了一個非常高效的碰撞檢測系統,但問題在於它仍然無法在主線程上運行,因爲它速度太慢。在Xbox 360上通過XNA發佈Thread.SetAffinity和線程問題
我試着設置一些線程,如果線程結束,另一個線程被創建。
if (doneCollisions)
{
PopulateGrid();
}
if (doneCollisions)
{
Thread thread = new Thread(new ThreadStart(CheckCollisionsGrid));
thread.Start();
}
void CheckCollisionsGrid()
{
Thread.CurrentThread.SetProcessorAffinity(3);
doneCollisions = false;
//Increments through all the grids.
.
.
.
doneCollisions = true;
}
現在我注意到一些奇怪的行爲,當調試。當我打電話給Thread.SetAffinity時,它終於開始實際檢查碰撞之前,一遍又一遍地跳回來。
現在我的衝突是通過5-10秒延遲...
如果任何人有洞察力,請輸入一些在這裏。
imho,親和力如此之低,以至於調度程序將「嘗試開始行動」,但會回覆這個問題,因爲有「更好的事情要做」(更高的親和力)... 只有在5-10秒之後調度程序爲您的操作找到一個插槽... – TheHe
@TheHe我認爲SetAffinity set的使用哪個核心?你有什麼建議來改善我的線程?如果我只是創建一個新的線程,它會落後,因爲1核心上的2個線程並不好。 –
aah .. 4sure你是對的...我是@優先事項和其他東西.. 第一:的Xbox有4個處理器?! 秒:勾選這個 - > http://msdn.microsoft.com/en-us/library/windows/desktop/ms684251(v=vs.85).aspx 第三:設置線程優先級更低? – TheHe