0

我正在开发一个可以在 PBS 下运行的程序,它具有特定的 CPU 计数,小于 CPU 的总数。我以前曾说过,如果程序超出限制,PBS 会通过终止程序来强制执行此限制。

我的程序将使用线程,但是它们将有几个阻塞命令,并且我想在此期间运行其他线程,因此我将暂停线程并将其放入队列中,同时恢复另一个线程。

但是 Linux 没有实现 pthread_suspend 等。解决方法是使用互斥锁,但是这通过一个循环在低级别工作,该循环可重复检查状态并锁定它N 个线程正在运行 >N 个 cpus 可能正在使用并且 PBS 将终止程序。

任何人都有不会导致此问题的解决方法吗?

最终,我的目标是防止我的程序使用超过 N 个处理器,而不会在阻塞调用期间浪费处理器时间,并且对此我很满意的解决方案(适用于 Linux 和 Windows)。

4

0 回答 0