Здравствуйте!
Ребята, посмотрев тут о многопоточности, хотел попробовать, но не вышло.
подскажите пожалуйста:
1. может ли такое быть, чтоб хедера с компилятором шли, но реализации не было (у меня gcc 4.6.1 под mingw32, работаю с Code::Blocks)?
2. как можно посмотреть, какие в точности фичи поддерживает компилятор?
3. а в точности, я пробовал такой код:
#include <future>
static int f(int i)
{
return i;
};
int main()
{
std::async(std::launch::async, f, 0); // error: invalid use of incomplete type 'struct std::future<int>'return 0;
}
проблема в том, что функция std::async возвращает объект типа std::future<int>,
но компилятору что-то не нравиться.
подскажите, пожалуйста, в чем проблема?
Здравствуйте, Дмитрий, Вы писали:
Д>Здравствуйте! Д>Ребята, посмотрев тут о многопоточности, хотел попробовать, но не вышло. Д>подскажите пожалуйста: Д>1. может ли такое быть, чтоб хедера с компилятором шли, но реализации не было (у меня gcc 4.6.1 под mingw32, работаю с Code::Blocks)? Д>2. как можно посмотреть, какие в точности фичи поддерживает компилятор?
Д>3. а в точности, я пробовал такой код: Д>
Д>#include <future>
Д>static int f(int i)
Д>{
Д> return i;
Д>};
Д>int main()
Д>{
Д> std::async(std::launch::async, f, 0); // error: invalid use of incomplete type 'struct std::future<int>'
Д> return 0;
Д>}
Д>
Д>проблема в том, что функция std::async возвращает объект типа std::future<int>, Д>но компилятору что-то не нравиться. Д>подскажите, пожалуйста, в чем проблема?
Д>Заранее спасибо
Ну, вообще-то, сообщение об ошибке говорит само за себя. Очевидно, что компилятор не видет определения этой структуры. То есть она объявлена, но ее определение недоступно компилятору.
Здравствуйте, Сыроежка, Вы писали:
С>Ну, вообще-то, сообщение об ошибке говорит само за себя. Очевидно, что компилятор не видет определения этой структуры. То есть она объявлена, но ее определение недоступно компилятору.
оно то так, но в файле <future> определение есть...
*(посмотрел еще раз)
они то есть но закрыты такой вот штукой:
Здравствуйте, Дмитрий, Вы писали:
Д>1. может ли такое быть, чтоб хедера с компилятором шли, но реализации не было (у меня gcc 4.6.1 под mingw32, работаю с Code::Blocks)?
Да, в MinGW с mingw.org (может одно время, может до сих пор) не были реализованы std потоки.
Были workaround'ы для этого и, если мне не изменяет память, в некоторых сборках (не на официальном сайте) они включены (быть может, вместе с OpenMP, LTO и т.п.).
Ищутся они по ключевым словам "mingw builds", на главных страницах описаны поддерживаемые возможности. Прямых ссылок не даю, т.к. сам нигде работу std::threads не проверял.
Здравствуйте, Alexey F, Вы писали:
AF>Ищутся они по ключевым словам "mingw builds", на главных страницах описаны поддерживаемые возможности. Прямых ссылок не даю, т.к. сам нигде работу std::threads не проверял.
Здравствуйте, Alexey F, Вы писали:
AF>Да, в MinGW с mingw.org (может одно время, может до сих пор) не были реализованы std потоки.
в MinGW действительно с потоками не очень, поставил цигвин, но не могу его прикрутить к Соде::Блокс:
установил gcc, выбрал в настройках проекта "цигвин гсс", а оно:
Execution of 'g++.exe -Wall -fexceptions -std=c++0x -g -c D:/programming/CodeBlocks/tehread/main.cpp -o obj/Debug/main.o' in 'D:\programming\CodeBlocks\tehread' failed.
пробовал напрямую с цигвин терминал, говорит:
Fatal error: can't create obj/Debug/main.o: No such file or directory