thread([&start, &end, &x, &grid, &t, &nwork, &threads] {
=======
Лямбда-замыкание, которое выполняется каждым потоком, захватывает ссылку на nwork
.
, что означает, что for
l oop повторяет и запускает каждый поток, каждый захваченный поток всегда ссылается на current значение nwork
, в то время, как это происходит.
Таким образом, внешний l oop, вероятно, быстро завершает создание каждого объекта потока, прежде чем все потоки фактически инициализируются и фактически входят в лямбда-замыкание, и каждое закрытие видит одно и то же значение nwork
, поскольку оно захватывается по ссылке , который является последним идентификатором потока.
Вам нужно захватить nwork
по значению вместо ссылки.