OSTEP书中的第28.5节显示,禁用中断可以在单处理器系统中实现线程间的互斥。我不明白:如果持有锁的线程在关键部分调用了一些系统调用,该怎么办?在这种情况下,它在释放锁之前放弃CPU,因此等待锁的另一个线程也可能进入关键部分。我翻阅了这一节,但没有找到答案。根据另一个的幻灯片2,Internal events are thread does something to relinquish the CPU和Preventing internal events虽然我已经确认确实有必要考虑持有锁的线程
让我解释一下“为什么”。我在Red Hat Enterprise Linux Server 7.7上运行我的应用程序。当我使用htop检查性能时,我发现很少有线程占用太多的CPU。我添加了一些调试日志,发现在我的代码中没有创建具有高CPU的线程。因此,我假设这些CPU贪婪线程是在我正在使用的第三方共享库中创建的。所以有一个问题:假设我有一个线程id (17405)。有没有办法找出是哪个共享库启动了这个线程?
如果这个
我如何将一个四核的三个核心从Linux中分离出来,并将它们专门用于Halcon?以下是我迄今尝试过的:
Linux将Linux配置为只使用四核CPU的核心0,通过引导选项isolcpu=1,2,3I启动了我的多线程C++程序,并让一个线程配置了几个HSystem::SetSystem而且,这一点很重要,首先,halcon主线程的这个运行函数调用pthread_setaffinity(getpid(), sizeof(set), &set); f