不同线程中的上下文切换

时间:2012-11-19 22:59:07

标签: multithreading concurrency multitasking

有没有办法执行抢先的同一线程上下文切换?

我很确定这不是描述我要找的东西的正确方法,所以这里有一个更长的描述:
我想要与POSIX ucontext_tboost::context相同的行为。可能还有其他我不知道的。我不知道它的官方术语,但基本上它们允许单线程多任务处理。这两个库都需要“协作”代码,也就是说,当前运行的“线程”必须明确地执行上下文切换 我正在寻找一种强制上下文切换的方法。我认为这必须从一个单独的线程(真正的OS线程)完成。我想要一个“上下文”数组,冻结执行路径,并能够切换到我选择的任何一个,冻结当前执行。

我不关心解决方案是否为“切换器”使用单独的线程(我认为这是必需的)。 我很喜欢Java / C#/ C ++ / C解决方案,或者是C / C ++的组合和一些最小的装配。
我想如果它是跨平台(Windows和Linux)和交叉编译器(GCC,MinGW和VS,假设一个c / c ++解决方案),但我知道这不太可能。至少应该在Windows上使用至少一个编译器 我几乎可以使用任何所需的库或兼容层(例如boost或某种'Windows上的POSIX')

我希望这不是要求太多。

1 个答案:

答案 0 :(得分:1)

boost.fiber - 可以像boost.thread一样编程,但提供用户陆地线程