Вопрос:

Есть ли Future / Promise эквивалент C ++ в D?

concurrency d

242 просмотра

1 ответ

2516 Репутация автора

Существует ли в мире D ++ эквивалент будущего / обещания в мире D?

Конечно, есть std.parallelism, но он не обладает точно функциональностью комбинации обещание / будущее (нет эквивалента, чтобы получить будущее или установить результат или исключение, вы также не можете дождаться завершения).

Автор: Quonux Источник Размещён: 04.10.2013 09:44

Ответы (1)


2 плюса

12563 Репутация автора

Я полагаю, что вы не всерьез взираете на std.parallelism... Эквивалентным «получить будущее» (если под этим вы подразумеваете метод std::futureget ()) являются yieldForce (), spinForce () и workForce (). Прочтите об этом более внимательно, и вы увидите, что вы также можете дождаться завершения ...

std :: future :: get () ждет, пока будущее не получит действительный результат и (в зависимости от того, какой шаблон используется) получит его . Это именно то, что делает yieldForce.

Об исключениях ... Где вы увидели, что вы не можете получить исключение ?? Со страницы std.parallelism : если задание еще не запущено, выполните его в текущем потоке. Если это сделано, вернуть его возвращаемое значение, если таковое имеется. Если это происходит, дождитесь условной переменной. Если это вызвало исключение, сбросьте это исключение .

std.parallelism "страдает" от того, что не пытается копировать C ++ и / или Java, и люди из этих сообществ всегда ожидают, что все будет вести себя так, как они привыкли (бывал там, делал это).

Кто-то поправляет меня, но std.parallelism предшествует std :: future и std :: обещаем, верно?

Автор: DejanLekic Размещён: 04.10.2013 10:37
Вопросы из категории :
32x32