我一直在使用JavaScript实现一个相当复杂的系统,需要模拟多线程进程等内容。在真正的多线程进程(例如内核线程)中,可以通过上下文切换在不同线程之间进行切换。这是因为您可以将当前进程的程序计数器和寄存器存储到临时结构中,恢复其他进程的程序计数器和寄存器,然后从上一个进程离开的地方继续执行。
我想知道是否可能在JavaScript中实现类似的功能。目前我不知道如何做到这一点,因此一直在使用协作式多任务处理设计该系统。具体而言,我想要在多线程模拟器中运行的任何“函数”都被分成一个函数数组。为了执行“函数”,我遍历函数数组,按顺序执行每个函数,并维护一个“程序计数器”,指示下一个要执行的函数。这样,我就可以通过调用数组中的某个函数来模拟上下文切换,等待函数返回,然后切换到需要执行的其他函数数组。
我的当前方法可行,但在此系统中编写代码很困难。每个函数必须明确指出何时可以中断,并且因为数组中的函数都是独立的,所以在不同部分之间传递数据的逻辑很复杂。我希望能够更接近抢占式多任务处理。
我的问题是:是否可能以一种方式运行任意JavaScript函数,使其可以被外部源挂起和恢复?
我想知道是否可能在JavaScript中实现类似的功能。目前我不知道如何做到这一点,因此一直在使用协作式多任务处理设计该系统。具体而言,我想要在多线程模拟器中运行的任何“函数”都被分成一个函数数组。为了执行“函数”,我遍历函数数组,按顺序执行每个函数,并维护一个“程序计数器”,指示下一个要执行的函数。这样,我就可以通过调用数组中的某个函数来模拟上下文切换,等待函数返回,然后切换到需要执行的其他函数数组。
我的当前方法可行,但在此系统中编写代码很困难。每个函数必须明确指出何时可以中断,并且因为数组中的函数都是独立的,所以在不同部分之间传递数据的逻辑很复杂。我希望能够更接近抢占式多任务处理。
我的问题是:是否可能以一种方式运行任意JavaScript函数,使其可以被外部源挂起和恢复?