Реагирование потоков, нуждающихся в собственной копии std :: shared_future, которая относится к государству общего.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Реагирование потоков, нуждающихся в собственной копии std :: shared_future, которая относится к государству общего.

Сообщение Anonymous »

У меня есть вопрос о странице 270 из Эффективного современного C ++ , написанного Скоттом Мейерсом.

строка 5/6, он пишет : «Единственная тонкость заключается в том, что каждому реагирующему потоку нужна собственная копия std :: shared_future, которая относится к общему состоянию, ...» < /p>

Мой вопрос: Почему мы обязаны передать копию std :: shared_future каждой функции лямбда в каждом потоке? Принимая во внимание, что я приорите, я не вижу никакой проблемы, чтобы передать его ссылкой, так что существует уникальное общее состояние, которое будет использоваться различным потоком? < /p>

Я написал код, адаптированный из книги доктора Скотта Мейерса, которая работает, даже если я передаю ссылку на SF PAR. < /p>

Таким образом, можно ли передать его ссылкой? < /p>

#include
#include

std::promise p;

void react(){}

void detect()
{
auto sf = p.get_future().share();

std::vector vt;
int n=10;
for(int i=0;i < n; i++)
{
vt.emplace_back([sf]{sf.wait();
react();
});
}

p.set_value();

for(auto& t : vt)
t.join();

}

int main()
{
detect();
return 0;
}


Подробнее здесь: https://stackoverflow.com/questions/570 ... efers-to-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»