std::futureで未来に生きたと思ってたけどAdaがすでに通っていた道だった...
std::futureで未来に生きる - Flast?なにそれ、おいしいの? でドヤァ...ってやったけど、Adaを勉強したらAdaがすでに通っていた道だった。しかも言語仕様で。
with Ada.Real_Time; use Ada.Real_Time; with Ada.Text_IO, Ada.Integer_Text_IO; use Ada.Text_IO, Ada.Integer_Text_IO; procedure future is task type Another_World is entry Set_Value (An_Value : in Integer); end Another_World; World : Another_World; task body Another_World is Value : Integer; begin accept Set_Value (An_Value : in Integer) do Value := An_Value; end Set_Value; Put ("value :"); Put (value); Put_Line (""); end Another_World; begin delay To_Duration (Milliseconds (1000)); World.Set_Value (1); end future;
このコードは(withの問題を除いて)Ada83でも可能です。ってことはCなんかよりも早く1983年からpromise-future的なことは考えられていたということですね。
ライブラリでっていう後手後手に回ってるC++が悲しいです。