首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将同步阻塞共享内存模型代码转换为运行在线程池上的异步协同?

如何将同步阻塞共享内存模型代码转换为运行在线程池上的异步协同?
EN

Stack Overflow用户
提问于 2013-03-07 12:29:20
回答 1查看 306关注 0票数 0

虽然有很多解决方案与我的问题部分匹配,但我想知道是否存在完全匹配。很难找到一个完整的解决方案,因为这些部分占据了搜索结果。这应该是一个运行时框架,并且(可选)是当语言不支持协同服务时,源代码所需的转换。

有一些库,比如具有lthread_cond_wait() API的线程,但是每个线程都被单个p线程所限制。我希望轻量级线程能够在多个线程中运行。它们应该由线程池任意选择。无论是单线程调度程序还是全局锁调度程序都不匹配。我想我们可以做得更好。

线程也不是一个选项,因为它既不涉及源代码转换,也不像原始线程那样避免源代码转换。

几个绿色线程运行时(Erlang,Limbo)不匹配,因为它们仅限于CSP (通信顺序进程)模型,但我也希望具有共享内存模型同步原语:互斥、条件变量、rwlock。

转型涉及:

  1. 将堆栈上下文转换为堆中的对象
  2. 将互斥调用转换为操作、禁用和激活线程池和发布订阅上的作业。
  3. 条件变量也应转换为发布-订阅关系。
  4. 如果有阿达式的会合会很好

由于发布-订阅机制中潜在的死锁,而没有使用全局锁或单个调度程序线程,我未能执行简单的运行时实现,但我仍然认为这是可能的。

EN

回答 1

Stack Overflow用户

发布于 2013-03-28 23:54:06

免责声明:线程作者。

您可以启动多个线程,并在每个线程中运行一个l线程调度程序(这是通过在p线程函数中调用lthread_run()自动完成的)。这样,每个线程都将运行一组l线程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15271278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档