On Mon, 13 Jan 2025 02:56:13 GMT, David Holmes <dhol...@openjdk.org> wrote:
> So a simple solution would be to just use Thread::number_of_threads() > 0 as > the guard. That means we will skip the lock whilst it is unsafe to try and > use it, then start using it once the main thread has "attached" even though > it is not technically needed until there is another thread created. Hi @dholmes-ora, I think it would still be problem that NonJavaThreads (such as `WatcherThread` and `AsyncLogWriter`) may use NMT before main_thread is "attached" and detectable with `Thread::number_of_threads()`. Both JavaThreads and NonJavaThreads can use NMT before being detectable by `Thread::number_of_threads()` or `NonJavaThread::end()`. Threads also use NMT after `Threads::remove` or `NonJavaThread::remove_from_the_list()` is called. So it seems that even checking both `Thread::number_of_threads()` and `NonJavaThread::end()` doesn't reliably tell us whether the lock needs to be taken. ------------- PR Comment: https://git.openjdk.org/jdk/pull/22745#issuecomment-2588176443