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

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

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

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

25.03.2014, 14:59. Просмотров 376. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2014, 14:59     Future::wait_for не работает
Посмотрите здесь:

C++ Не работает явное преобразование типа, а неявное работает.
C++ То работает, то не работает. Массив из случайных вещественных чисел
C++ Release не работает, Debug работает
Приложение работает в Win2K, не работает в Win2003 C++
C++ Код не работает в VC++ 6.0 но работает в MSVC++ 2010
Программа работает на Windows 7, но не работает на XP C++
C++ Программа при релизе не работает, а при дебаге работает
Работает в онлайн компиляторах, но не работает у меня C++
C++ Почему тип "bool" работает в файле с расширением .cpp и не работает в файле с расширением .c?
C++ 11 многопоточность Future и promise C++
C++ Не работает кириллица. Или работает, но illegale bute sequence

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
25.03.2014, 15:23     Future::wait_for не работает #2
C++
1
while (fut.wait_for(span)==std::future_status::timeout)
скорее всего это условие всегда истинно

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

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

Добавлено через 2 минуты
если решено не выполнять в отдельном потоке, то выполнение будет производиться, когда будет запрошен результат, но мы не доходим до fut.get()
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
25.03.2014, 15:40     Future::wait_for не работает #5
Вот тут же дается нормальный наглядный пример: wait_for
Yandex
Объявления
25.03.2014, 15:40     Future::wait_for не работает
Ответ Создать тему
Опции темы

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