非抢占式 Pthreads?
有没有一种方法可以在没有调度程序的情况下使用pthreads,因此只有当线程显式屈服或在互斥体/条件上被阻塞时才会发生上下文切换?如果没有,是否有办法最小化调度开销,以便尽可能少地发生强制上下文切换?
问题涉及 POSIX 线程的 Linux gcc/g++ 实现。
Is there a way to use pthreads without a scheduler, so context switch occurs only if a thread explicitly yields, or is blocked on a mutex/cond? If not, is there a way to minimize the scheduling overhead, so that forced context switches will occur as rarely as possible?
The question refers to the Linux gcc/g++ implementation of POSIX threads.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
您可以使用 Pth(又名 GNU 可移植线程),一个非抢占式线程库。使用
--enable-pthread
配置它将为pthreads
创建插件替代品。我刚刚在我的 Mac 上构建并测试了它,对于简单的 pthreads 程序来说它工作得很好。来自自述文件:
You can use Pth (a.k.a. GNU Portable Threads), a non-preemptive thread library. Configuring it with
--enable-pthread
will create a plug-in replacement forpthreads
. I just built and tested this on my Mac and it works fine for a simple pthreads program.From the README: