Как определить поток Финализатора GC?

Вы не можете передавать операторы напрямую, вам нужна такая функция:

from operator import eq

string1 = "guybrush"
string2 = "guybrush threepwood"

def compare(op):
    print(op(string1, string2))

compare(eq)
>>>False

Оператор in немного сложнее, так как operator не имеет оператора in. но имеет contains

operator.contains(a, b) так же, как b in a, но это не будет работать в вашем случае, так как порядок строк установлен. В этом случае вы можете просто определить свою собственную функцию:

def my_in(a, b): return a in b

compare(my_in)
>>>True
7
задан Tall Jeff 11 January 2009 в 21:24
поделиться

4 ответа

Лучший способ определить поток через его управляемый идентификатор:

Thread.CurrentThread.ManagedThreadId;

Так как финализатор всегда работает в потоке GC, можно создать финализатор, который сохранит идентификатор потока (или объект потока) в valiable помехах.

Образец:

public class ThreadTest {
    public static Thread GCThread;

    ~ThreadTest() {
        ThreadTest.GCThread = Thread.CurrentThread;
    }
}

в Вашем коде просто создают экземпляр этого класса и делают сборку "мусора":

public static void Main() {
    ThreadTest test = new ThreadTest();
    test = null;
    GC.Collect();
    GC.WaitForPendingFinalizers();

    Console.WriteLine(ThreadTest.GCThread.ManagedThreadID);
}
14
ответ дан 6 December 2019 в 10:55
поделиться

Y код Минимума мог быть улучшен немного...

public static void Main()
{
  ThreadTest test = new ThreadTest();
  test = null;

  GC.Collect();
  GC.WaitForPendingFinalizers();

  Console.WriteLine(ThreadTest.GCThread.ManagedThreadID);
}
1
ответ дан 6 December 2019 в 10:55
поделиться

Если отладка является опцией, можно легко найти это использованием WinDbg + SoS.dll. !threads управляйте отображает все управляемые потоки в приложении, и поток финализатора конкретно выделяется с комментарием.

3
ответ дан 6 December 2019 в 10:55
поделиться

Я не думаю, что это возможно даже использование API отладки, посмотрите это сообщение в блоге для большего количества информации.

0
ответ дан 6 December 2019 в 10:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: