1

我想为 C 制作或找到一个简单的、独立于平台的并发(又名线程)库。我想在不使用依赖于操作系统的线程 API 的情况下实现它。它不需要是“真正的线程”,这就是我避免使用该术语的原因。实现此库的程序应该作为操作系统的单个进程出现。

我研究了一些选项,例如 OpenMP、Windows 的 hacky pthreads 实现、Intel Cilk Plus、Duff 设备的变体(看起来很有希望)等等。我已经在这个网站上搜索了线索。是时候打造我自己的方式了。

我已经缩小了范围。我想在尽可能接近标准的 C 中执行此操作(更喜欢避免使用 C11、Boost 等)。理想情况下,我希望完全不使用外部库来执行此操作。如果必须使用它们,则它们不得使用运行时。

如果我知道从哪里开始,我完全有信心可以完成这项工作。我不是 C 方面的专家,但我是一个非常有能力的自学老师。我正在寻找的是关于实现这个库的建议、指示或想法。

目前的想法:我应该伪造或重新实现程序集的共享内存模型,使用程序计数器,返回指针等。叫我疯了......

相关:线程实现(第一个答案。)我正在寻找更多这样的。

也相关:http ://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=54489

4

1 回答 1

1

我曾经在 Turbo C 中使用 setjmp 和 longjmp 构建了一个线程子系统(合作)(当然还有一点用于处理堆栈的 asm)——这不是我会再做的事情。可以做到,但我认为您不使用非标准 C 的愿望是不明智的。

我们使用 pthreads(并且 pthreads w32 在 Windows 平台上绰绰有余),这几乎是跨平台的,直到所有那些美妙的 C11 线程功能在所有地方都得到支持。我的建议是重新考虑你的厌恶——你正在为一个痛苦的世界做好准备。

于 2013-01-03T04:26:10.333 回答