11 / 11 / 6
Регистрация: 13.11.2016
Сообщений: 57
1

Std::promise::set_exception

31.05.2018, 17:20. Показов 668. Ответов 1
Метки нет (Все метки)

Пример с Хабра (вот из этой статьи):

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
#include <iostream>
#include <thread>
#include <future>
 
void worker(std::promise<void> & p) {
    try {
        throw std::runtime_error("exception from thread");
    } catch (...) {
        p.set_exception(std::current_exception());
    }
}
 
void checkThreadAndException() {
    std::promise<void> p;
    auto result = p.get_future();
 
    std::thread t(worker, ref(p));
    t.detach();
 
    try {
        result.get();
    } catch (const std::runtime_error & e) {
        std::cout << "runtime error catched from async worker" << std::endl;
    }
}
 
int main()
{}
Проверял на rextester.com. Работает с VC++, но gcc и clang выводят такие сообщения об ошибках:

gcc:
/tmp/ccJwAGlp.o: In function `checkThreadAndException()':
source.cpp:(.text+0x21d): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status


clang:
/usr/bin/ld: /tmp/source-265202.o: undefined reference to symbol 'pthread_setspecific@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
clang: error: linker command failed with exit code 1 (use -v to see invocation)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2018, 17:20
Ответы с готовыми решениями:

Не могу разобраться как обновить в std::map<std::string, вектор_структур>
Не могу разобраться как обновить вектор структур после его добавления в map без удаления и...

std::string, std::fstream, ошибка кучи
где то начало вылетать при операции += с локальной переменной std::string. Заменил на свой qString....

Шаблоны и ссылки. Promise<T>, Future<T>
Дали задание написать Promise&lt;T&gt; и Future&lt;T&gt;. Сделал у обоих shared_ptr на структуру, в которой...

Построение архитектуры асинхронного кода через future/promise
Всем привет Недавно размышлял над двумя путями реализации асинхронного кода : с помощью...

1
Эксперт С++
8563 / 4137 / 910
Регистрация: 15.11.2014
Сообщений: 9,339
31.05.2018, 18:09 2
Цитата Сообщение от Courfeyrac Посмотреть сообщение
undefined reference to `pthread_create'
при сборке проекта, для компилятора добавьте ключик: -lpthread
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2018, 18:09

Как проинициализировать std::stack<const int> obj ( std::stack<int>{} );
добрый день. вопрос в коде: http://rextester.com/VCVVML6656 #include &lt;iostream&gt; #include...

std::filesystem && std::asio и пр
Пытался найти хоть какие-то сроки включения всего этого в стандарт (так же ожидается lexical_cast,...

std::defaultfloat
Есть такая тема в новом стандарте как std::defaultfloat Описание:...

Get для std::variant
Задача: сделать простой метод get() без параметров, который буде возвращать установленное в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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