跳转到内容

PSP 开发/多线程

25% developed
来自维基教科书,开放的书,开放的世界

PSP 允许多个线程,但只有一个核心,只有一个线程。这意味着没有优化可以超过一个线程。在计算机中,这是一个很大的缺点,这就是为什么双核和四核始终比单核计算机性能更好。为了防止过时,坚持使用一个线程,并为其他模块(AI、GUI 动画、[w:Spawn_(computing)|Spawn] 独立模块)添加额外的线程。

有三种类型的线程可用:常规线程、信号量和互斥量(互斥锁)。

PSP 程序流程

[编辑 | 编辑源代码]

当内核将控制权交给程序时,它会在两个不同的用户空间进行操作。第一个用户空间名为“用户”,第二个名为“内核”。在用户线程中,有些事情是无法完成的,需要在内核线程中完成。在内核线程中乱搞会导致 PSP 变砖。

为了控制 PSP 在哪个线程中启动,应该使用函数 PSP_MAIN_THREAD_ATTR(),并将属性 PSP_MODULE_USER 用于用户模式。如果函数 PSP_MAIN_THREAD_ATTR() 提供了 PSP_THREAD_ATTR_USER,则会自动执行此操作。但是,对于内核模式,应该分别使用 PSP_MODULE_KERNEL 和 PSP_THREAD_ATTR_KERNEL。

内核线程死亡后,会进入“用户模式”或用户线程,并执行。当程序不进入“内核模式”时,会直接发生这种情况。


华夏公益教科书