虽然有很多解决方案部分匹配我的问题,但我想知道是否存在完全匹配。很难找到完整的解决方案,因为这些部分解决方案会占用搜索结果。这应该是一个运行时框架,并且(可选)当语言不支持协程时,需要转换源语言代码。
像lthread这样的库有lthread_cond_wait()API,但是每个lthread都受到单个pthread的限制。我希望轻量级线程能够在几个pthreads中运行。它们应该由线程池任意挑选。单线程调度程序或全局锁定调度程序都不匹配。我想我们可以做得更好。
lthreads也不是一个选项,因为它既不涉及源代码转换,也不像protothreads那样避免它。
几个绿色线程运行时(Erlang,Limbo)不匹配,因为它们仅限于CSP(通信顺序进程)模型,但我也想拥有共享内存模型同步原语:互斥,条件变量,rwlocks。
转型涉及:
由于在不使用全局锁或单个调度程序线程的情况下发布 - 订阅机制中可能存在死锁,我无法直接执行运行时实现,但我仍然认为这是可能的。
答案 0 :(得分:0)
免责声明:lthread作者。
你可以启动几个pthread并在每个pthread中运行一个lthread调度程序(这是通过在pthread函数中调用lthread_run()自动完成的)。这样每个pthread都会运行一堆lthread。