concurrency d d2

concurrency - ¿Hay un equivalente de Future/Promise de C++ en D?



d2 (1)

¿Existe un equivalente futuro / promesa del mundo C ++ en el mundo D?

Claro que hay un estándar de paralelismo pero no tiene exactamente la funcionalidad de la combinación de promesa / futuro (no hay un equivalente para obtener el futuro o el conjunto es el resultado o la excepción, tampoco puede esperar la finalización).


Creo que no std.parallelism en serio el std.parallelism ... Equivalente a "obtener el futuro" (si te refieres al método get () de std::future ) son yieldForce (), spinForce () y workForce ( ) Lea acerca de estos más atentamente y verá que también puede esperar su finalización ...

std :: future :: get () espera hasta que el futuro tenga un resultado válido y (dependiendo de qué plantilla se use) lo recupera . Eso es exactamente lo que hace yieldForce.

Acerca de las excepciones ... ¿Dónde viste que no puedes obtener una excepción? Desde la página std.parallelism : si la tarea aún no se ha iniciado, ejecútela en el hilo actual. Si está hecho, devuelve su valor de retorno, si corresponde. Si está en progreso, espere una variable de condición. Si lanzó una excepción, vuelva a lanzar esa excepción .

std.parallelism "sufre" por no intentar copiar C ++ y / o Java y las personas que provienen de estas comunidades siempre esperan que las cosas se comporten como están acostumbradas (estuvieron allí, lo hicieron).

Alguien me corrige, pero std.parallelism es anterior a std :: future y std :: promise, ¿verdad?