Информация об изменениях

Сообщение Re: Как обойти дедлок в ntdll? от 06.02.2020 4:15

Изменено 08.02.2020 13:36 Vain

Re: Как обойти дедлок в ntdll?
Здравствуйте, Basil2, Вы писали:

B>Иногда поток 2 выделяет память. Это происходит через функцию рантайма __lock(). Если поток приостанавливают в этот момент, то он так и остается в лочке. Затем приостановивший его тред сам пытается выделить память, попадает в ту же __lock() и всё виснет намертво.

Почему бы просто не делегировать выделение и освобождение памяти одному потому, т.е. первому? Придётся написать клинап памяти от второго потока, но это и так надо делать после остановки потоков.
Re: Как обойти дедлок в ntdll?
Здравствуйте, Basil2, Вы писали:

B>Иногда поток 2 выделяет память. Это происходит через функцию рантайма __lock(). Если поток приостанавливают в этот момент, то он так и остается в лочке. Затем приостановивший его тред сам пытается выделить память, попадает в ту же __lock() и всё виснет намертво.

Почему бы просто не делегировать выделение и освобождение памяти одному потоку, т.е. первому? Придётся написать клинап памяти от второго потока, но это и так надо делать после остановки потоков.