【问题标题】:Get ID of executing Process/Thread in C++ Builder在 C++ Builder 中获取执行进程/线程的 ID
【发布时间】:2011-10-24 11:41:45
【问题描述】:

假设我有一个带有函数的类

class foo 
{
  ...

  void bar() {
    OutputDebugString(........);
     // mode code
  }
}

是否可以使用 OutputDebugString 打印正在执行函数的当前线程(或者如果它是主应用程序)的 ID?

我正在调试一个大型应用程序,并发现了死锁情况,并想检查死锁中包含哪些线程。因为它可能是锁定它自己的关键部分的同一个线程。

【问题讨论】:

    标签: c++ multithreading winapi c++builder-2010


    【解决方案1】:

    看看GetCurrentThread函数。

    【讨论】:

    • 我测试过 GetThreadId() 认为会返回当前线程的 id。但是 GetCurrentThread 并在检索到的伪句柄上使用 DuplicateHandle 就像一个魅力。谢谢。
    【解决方案2】:

    使用GetCurrentThreadId()

    请注意,线程不能在临界区自行死锁。一旦线程获得了关键部分的锁,它就可以根据需要释放重新进入相​​同的锁(与互斥锁相同)。只需确保为每个成功的锁(重新)进入解锁关键部分,这样其他线程就不会陷入死锁。

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多