IT源码网

linux之Fedora 中的多线程

kevingrace 2024年02月23日 程序员 31 0

我用 ptgread 编写了一个多线程程序。我的CPU是双核的。但该程序并不并行运行。我附加了系统监控如下。 我的问题是,支持fedora13多线程吗?

请您参考如下方法:

您的问题不完整,因此此答案可能无效。将修改更多信息。

但是,您应该能够掌握一些技巧。

  1. 是否有线程在等待另一个线程?
  2. 线程之间是否存在死锁,两个线程实际上都处于休眠状态?
  3. 是否涉及太多 I/O? (等待套接字,在磁盘上读取、写入,甚至重型 printfs 也包括此)
  4. 是否有任何线程处于长时间 sleep 状态(usleep、nanosleep 任何人......)

如果上述任何一个条件成立,即使CPU可用,因为事件指令集需要等待直到有效的back log完成。

你的问题的第二个限制是测量。您有系统吞吐量图表。即使您只有一个 CPU,线程切换也可以如此透明,因为线程切换只需几毫秒(10 或 100 秒)。如果你的每个线程都在同一个 CPU 上运行 - 你永远不能说看到这些线程何时切换。事实上,您看到的图表不仅由您的 2 个线程共享,而且还由系统中运行的许多进程共享。

但正如我所说 - 只有您提供完整的详细信息,我才能更有效。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!