[ https://issues.apache.org/jira/browse/IGNITE-1439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15973180#comment-15973180 ]
Igor Sapego commented on IGNITE-1439: ------------------------------------- Implemented prototype for Windows. As we have to support Windows XP I can't use Condition Variables (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682052(v=vs.85).aspx), which would be perfect for cross-platform solution. So instead I used Manual-reset Event objects (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682655(v=vs.85).aspx) and critical sections. Current implementation seems to be correct though I have not tested it properly yet. Some details of current implementation: To create {{Future}} one needs to first create {{Promise}} object. {{Promise}} is object which used to set value or error for the linked {{Future}} objects. Once {{Promise}} created, one can call {{Promise::GetFuture()}} to get instance of related {{Future}} object. There may be unlimited number of futures for every {{Promise}}. {{Promise}} can't be copied though. Error or value can be set only once for the {{Promise}}. If someone tries to set value or error to a set {{Promise}} this will result in exception. If {{Promise}} instance gets destructed before any value or error has been set error is automatically set for all linked {{Future}} objects. On any {{Future}} object user can call either {{Wait}}, {{WaitFor}} or {{Get}} methods. All these methods are blocking. If {{Get}} called on future for which error has been set this will result in exception. Obviously enough, {{Future}} class is a part of public API, while {{Promise}} is internal class. > CPP: Implement futures. > ----------------------- > > Key: IGNITE-1439 > URL: https://issues.apache.org/jira/browse/IGNITE-1439 > Project: Ignite > Issue Type: Task > Components: platforms > Affects Versions: 1.1.4 > Reporter: Vladimir Ozerov > Assignee: Igor Sapego > Labels: cpp > Fix For: 2.1 > > -- This message was sent by Atlassian JIRA (v6.3.15#6346)