+ 1
What is included in the atomic header of c++, in what case would i need it?
8 Answers
+ 15
In this example with regard to your description (if I have gotten it right!), I have been created a hypothetical program to deal with arrays update in a regular way. Please add your expectation from that then I will try to find an answer for that (consider that I don't have any background on multithreading! But I will do my best to find a solution for that.)
int main()
{
int size = 1000000;
int a[size] = {0, 1, 2, ..., 999999};
int b[size] = {0, 1, 2, ..., 999999};
f_a(a, size);
....
}
// Just for array a
void f_a(int *x, int s) {
// Updating array a by new values
for (int i= 0; i < size; ++i) {
cout << x[i] << " + 10 = ";
x[i] += 10;
cout << x[i] << endl;
}
}
+ 14
atomic library defines classes and template classes to use to create types that support atomic operations.
[https://msdn.microsoft.com/en-us/library/hh874894.aspx]
What's an atomic operation then? As a vague definition, it deals with multithreading and concurrency. For clear description see: [https://en.wikipedia.org/wiki/Linearizability]
+ 13
Thanks Kai for your cooperation. I begin my research as soon as possible.
+ 12
Hey Kai
I've done that using thread library instead of atomic. It works concurrently fine. If you didn't satisfy with that tell me to search a bit more. Here is the code, but SL doesn't support that. The second link is a live version of the code in another online compiler which fully supports C++ 11 and above.
[https://code.sololearn.com/c1xLIhQ7f3mK]
[https://onlinegdb.com/SyGzIRQ2b]
Another live version [http://cpp.sh/7vx2v]
+ 2
Sorry for requestioning, but i am Not sure if i get the the describtion correct. could you maybe describe a situation in which you would use it and how...?
+ 2
lets say i have two hugh arrays "a" and "b" which are each updated through some function f_a and f_b, but the update from each element, e.g. in a through f_a, is independent of every other entry in a, but not from b.
Since they are hugh i want the function to run the update on multiple threads(e.g. processor kernels?). since multiple threads read out b for the update of a i want to use the atomic header? but if so, how?
+ 1
almost. let me put it in a class...
https://code.sololearn.com/c6gUcUxw5EwL/?ref=app
as you can See, for the update of a' s entry there is only a dependency on b and on the very same entry itself. so i think it could run parallel, but is the atomic somewhere needed? and if (not), why