迷失多线程:不用汇编模拟实现简单可控多线程

之前提供了一个在BREW等Arm和X86上的模拟多线程,核心部分是用汇编写的,里面的关键是栈的切换。今天偶尔清闲一下,突然想能不能不用汇编来实现,有些人一听汇编就头大了。于是就用了一下午来研究下如何操作。代码并不多,只是因为我在linux下写的,只能使用gdb来调试,而我对gdb非常不熟悉,所以弄起来非常的慢,大部分的时间都是靠仔细的分析代码来找错误的原因和地方的,浪费了不少精力,期间还在白纸上来描述流程,写部分实现,分析。就这些年的集中精力来说,可以说也花费了不少脑细胞了。

闲话不说了,苦也受过了,先看代码:

继续阅读迷失多线程:不用汇编模拟实现简单可控多线程

自己实现多线程

在开发BREW程序的时候,SDK中包含了线程(我记得是3.1以上)模型,但不推荐使用。而移植的很多内容,都使用了线程。由于BREW也不允许使用静态变量,死循环或者嵌套很深的占用大量时间的运算,如果要随时暂停的话,只能把变量临时存储起来,然后一层一层的往外退。首先,修改的话比较困难,出错的几率很大,其次,每次恢复和暂停都需要占用时间,进行额外的操作,影响效率。这个时候,线程就起作用了,不是不推荐使用么,我们就自己实现一个。
继续阅读自己实现多线程