gpt4 book ai didi

ISO C 中的跨平台并发库

转载 作者:太空宇宙 更新时间:2023-11-04 03:58:30 24 4
gpt4 key购买 nike

我想为 C 创建或找到一个简单的、平台独立的并发(也称为线程)库。我想在不使用依赖于操作系统的线程 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

最佳答案

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

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

关于ISO C 中的跨平台并发库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14132995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com