Atomics guarantee two characteristics. At one hand, they are atomic, at the other hand, they provide synchronisation and order constraints on the program execution.
The atomics are the base of the C++ memory model. Per default, sequential consistency is applied.
I created the facebook group Modernes C++. I see one big advantage in this group.
Since C++11, C++ has a memory model. It is the foundation for multithreading. Without it, multithreading is not well defined.
In case you are using promise and future to synchronize threads, they have a lot in common with condition variables. But most of the time, task are the better choice.
The parent of a thread has to take care of their child. The parent can wait until its child is done or detach itself from its child. But that is not really new. But that will not hold for std::async. The big charm of std::async is, that the parent has not taken care of its child.
With std::promise and std::future, you have full control over the task.
This page is the starting point for my blog Modernes C++. A simple overview of my existing and upcoming posts.
std::packaged_task enables you to write a simple wrapper for a callable, which you can invoke later.
std:.async feels like an asynchronous function call. Under the hood std::async is a task. One, which is extremely easy to use.
Currently are 141 guests and no members online
Kubik-Rubik Joomla! Extensions