gpt4 book ai didi

c - 如何调试多线程/intr 的打印

转载 作者:行者123 更新时间:2023-11-30 17:21:29 24 4
gpt4 key购买 nike

我试图通过将打印放入多个中断(软件)中进行调试。我看到这些打印与两个线程重叠。

我想打印一些时间/刻度以确保两个线程同时运行。

我使用了jiffies,但当时我没有得到适当的改变。我看到多个中断有相同的刻度。

最佳答案

这被标记为 linux,所以我将为您提供一个 linux 不可移植的答案,因为据我所知,没有真正可移植的方法来执行此操作:

  • 您可以使用pthread_self(),并打印它。它是一种不透明类型,但您可以将其转换为 void *,并且可以在 Linux 上运行,前提是您唯一的目的是区分线程 - 不要将其用于任何用途否则。

  • 您可以使用gettid(),这是一个特定于 Linux 的调用,用于获取与 Linux 下的线程关联的进程号。没错,Linux 下的每个线程都有一个“隐藏”的 PID,gettid() 返回它。这是您可以通过 ps 显示的线程 ID。这稍微不那么恶心。

确保您进行的调用是线程安全的。 sprintf 没问题。 syslog 绝对不是线程安全的(我已经被这个问题困扰了)。因此,您需要一个互斥锁来保护这一点。

关于c - 如何调试多线程/intr 的打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com