ISO C中的跨平台并发库

时间:2013-01-03 04:18:20

标签: c multithreading cross-platform iso

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

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

我缩小了范围。我希望尽可能接近标准C(更喜欢避免使用C11,Boost等)。理想情况下,我想在不使用外部库的情况下这样做。如果必须使用它们,则不得使用运行时。

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

当前的想法:我应该假装或重新实现汇编的共享内存模型,包括程序计数器,返回指针等。叫我疯了......

相关:Threading Implementation(第一个答案。)我正在寻找更多这样的。

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

1 个答案:

答案 0 :(得分:1)

我曾经在Turbo C中使用setjmp和longjmp构建一个线程子系统(合作)(当然还有一些asm用于堆栈) - 这不是我要做的事情。可以这样做,但是我认为你不使用非标准C的愿望是不明智的。

我们使用pthreads(并且pthreads w32在Windows平台上已经绰绰有余),这就像你可以获得的跨平台一样,直到所有那些精彩的C11线程功能都得到支持。我的建议是重新思考你的厌恶 - 你正在为自己的痛苦世界做准备。