PSP 開發/多執行緒
外觀
< PSP 開發
PSP 允許多個執行緒,但只有一個核心,只有一個執行緒。這意味著沒有最佳化可以超過一個執行緒。在計算機中,這是一個很大的缺點,這就是為什麼雙核和四核始終比單核計算機效能更好。為了防止過時,堅持使用一個執行緒,併為其他模組(AI、GUI 動畫、[w:Spawn_(computing)|Spawn] 獨立模組)新增額外的執行緒。
有三種類型的執行緒可用:常規執行緒、訊號量和互斥量(互斥鎖)。
當核心將控制權交給程式時,它會在兩個不同的使用者空間進行操作。第一個使用者空間名為“使用者”,第二個名為“核心”。在使用者執行緒中,有些事情是無法完成的,需要在核心執行緒中完成。在核心執行緒中亂搞會導致 PSP 變磚。
為了控制 PSP 在哪個執行緒中啟動,應該使用函式 PSP_MAIN_THREAD_ATTR(),並將屬性 PSP_MODULE_USER 用於使用者模式。如果函式 PSP_MAIN_THREAD_ATTR() 提供了 PSP_THREAD_ATTR_USER,則會自動執行此操作。但是,對於核心模式,應該分別使用 PSP_MODULE_KERNEL 和 PSP_THREAD_ATTR_KERNEL。
核心執行緒死亡後,會進入“使用者模式”或使用者執行緒,並執行。當程式不進入“核心模式”時,會直接發生這種情況。