Ну, получается получается простая замена static на thred_local позволяет нам получить желаемое многопоточное использование?
Если считать
6804: the trdLocalVar is -1 now
6e1c: the trdLocalVar is -1 now
4060: the trdLocalVar is -1 now
3fe4: the trdLocalVar is -1 now
6e1c: the trdLocalVar is -1 now
3fe4: the trdLocalVar is -1 now
6804: the trdLocalVar is -1 now
3fe4: the trdLocalVar is -1 now
4060: the trdLocalVar is -1 now
3fe4: the trdLocalVar is -1 now
вместо
45cc: the trdLocalVar is 1 now
1110: the trdLocalVar is 2 now
5534: the trdLocalVar is 3 now
4b44: the trdLocalVar is -1 now
1110: the trdLocalVar is 2 now
4b44: the trdLocalVar is -1 now
45cc: the trdLocalVar is 1 now
4b44: the trdLocalVar is -1 now
5534: the trdLocalVar is 3 now
4b44: the trdLocalVar is -1 now
желаемым многопоточным результатом, то да. Ты не забыл, что в q() из src.cpp видимая ею trdLocalVar разная и зависит от того, какая из трёх запущенных параллельно thr() из main.cpp её вызвала? thread_local поменяла семантику этой ранее static переменной.