возвращают освободившийся или его позицию в списке, или придется писать самому?
освободившийся что?
у нас и списка потоков-то нет
Ну закончил ли какой либо поток выполнение функции
сама задача непонятна, а если и представить, то нужно делать не так
Суть такая, опытным путем понял 100 потоков адекватно выполняются, нужно несколько тысяч итераций, и мне нужно отлавливать освободился ли какой поток, чтобы запустить следующий
в стандартном C++ ничего такого нет. бери какую-либо реализацию тредпула и добавляй туда задачи на выполнение
ну и не понятно зачем для cpu bound нужно 100 потоков
std::thread::join std::thread::joinable
и что это тебе даст?
кажется, что нужно просто взять тред пул, закинуть ему задачи. Когда какой-то поток освободится, он возьмет следующую задачу
у тебя потоки какие то разные, на ядрах разной мощности работают или что?) Почему один поток выделяется среди других как то? И почему они у тебя такие несамостоятельные, пусть сами решают когда брать задачи())
а если нужно дожидаться работы одного потока, чтобы запустить другой, то это синхронный код())
да я недавно в многопоточку окунулся не подумал об этом спасибо, сейчас почитаю
ну это нужно только в конец все потоки завершить, это уже решено, болше никаких синхронизаций не нужно ) Спасибо
критикуешь - предлагай уже тредпул пишу
У тебя один поток разрушился ты хочешь новый создавать? Создание потока так то не простая штука, лучше создать 100 сразу и в них закидывать задачи
Обсуждают сегодня