Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
hamster28
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 41
#1

Future::wait_for не работает - C++

25.03.2014, 14:59. Просмотров 441. Ответов 4
Метки нет (Все метки)

скопировал пример с cplusplus.com
запускается. из while не выходит.
компилятор gcc. среда - qt creator, хотя это врят ли важно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// future::wait_for
#include <iostream>       // std::cout
#include <future>         // std::async, std::future
#include <chrono>         // std::chrono::milliseconds
 
// a non-optimized way of checking for prime numbers:
bool is_prime (int x) {
  for (int i=2; i<x; ++i) if (x%i==0) return false;
  return true;
}
 
int main ()
{
  // call function asynchronously:
  std::future<bool> fut = std::async (is_prime,700020007); 
 
  // do something while waiting for function to set future:
  std::cout << "checking, please wait";
  std::chrono::milliseconds span (100);
  while (fut.wait_for(span)==std::future_status::timeout)
    std::cout << '.';
 
  bool x = fut.get();
 
  std::cout << "\n700020007 " << (x?"is":"is not") << " prime.\n";
 
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2014, 14:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Future::wait_for не работает (C++):

C++ 11 многопоточность Future и promise - C++
Всем Привет!!! Пытаюсь разобраться уже несколько дней, пока не получается, не могу понять как же всё таки работают future и promise и как с...

std::async std::future и функции-члены - C++
как в async передать функцию-член нужного мне обьекта класса? С простыми функциями получилось, а вот тут засада. Заранее спасибо за...

I am doing for the future - Иностранные языки
Объясните, по каком правилу тут используется I'm not healing, а не I won't heal. В Мерфи про отрицание ничего не говорится, но есть...

Present Tenses(I am doing/I do) for the future - Иностранные языки
Helen, I'm going to the supermarket. ...(you/come) with me? Правильный ответ: &quot;Are you coming with me?&quot; Почему? Это же не заранее...

Apply_visitor и std::future - Boost C++
Есть такой надуманный код. Я не могу понять почему не работает apply_visitor к объекту std::future который имеет возвращаемый тип...

Использование AsynchronousSocketChannel и Future <T> - Java SE
Задали в универе написать программу, асинхронно вычисляющую две функции. Вот что нужно использовать : &quot;Use Java, processes and...

4
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
25.03.2014, 15:23 #2
C++
1
while (fut.wait_for(span)==std::future_status::timeout)
скорее всего это условие всегда истинно

Добавлено через 3 минуты
или....Вы недождались завершения операции
0
hamster28
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 41
25.03.2014, 15:29  [ТС] #3
тогда возникает вопрос, почему оно истинно и как сделать, чтоб все работало. если я правильно понимаю, то мы просто ждем окончания выполнения функции, проверяя каждые 100 мс.
неужели она никогда не заканчивается? попробовал с малыми числами, све так же висит.
или таймаут как-то не так работает? это ж пример с с++!)
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
25.03.2014, 15:40 #4
аа я понял в чем дело, async предалагает асинхронную задачу, выполнять ее в отдельном потоке или нет, решает система, и тут видимо решение не запускать в отдельном потоке, попробуйте так

std::future<bool> fut = std::async (std::launch::async, is_prime,700020007);

Добавлено через 2 минуты
если решено не выполнять в отдельном потоке, то выполнение будет производиться, когда будет запрошен результат, но мы не доходим до fut.get()
0
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
25.03.2014, 15:40 #5
Вот тут же дается нормальный наглядный пример: wait_for
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 15:40
Привет! Вот еще темы с ответами:

ExecutorService, ArrayList<Future<>> - Java SE
Такой вот код, получаю nullPointException на строчке FutureCount.add(pool.submit(new Counter(startValue,TH1)));, когда пытаюсь...

Топовый future proof комп - Игровой компьютер
Завершаю теоретическую сборку future proof компа для игр. Посмотрите плиз и покритикуйте, если что упустил (только не говорите про...

Шаблон проетирования Future (будущие) - C#
Здравствуйте, скажите пожалуйста о шаблон проектирования Future (будущие) пол интернета облазил, информации ноль. Если можно киньте...

MacBook Pro 2010 & Future - Программирование iOS
Всем привет! Подскажите, пожалуйста, кто в теме: У меня MacBook Pro 2010 года, который меня как бы полностью устраивает. Даже без...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
25.03.2014, 15:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru