I was reading my book "Professional C++ 3rd Edition" by Marc Gregoire on the Atomic operations library and the multithreading library provided by the C++ standard. This book does not go very much into detail on these two subjects, especially on the atomic operations library. This irritates me very much. To give you an idea, they didn't give a definition for the c++ attribute [[carries_dependency]] because it was too "exotic". I tried looking up some stuff on this website's reference pages, but I was completely confused (What the heck is a dependency tree?). Does someone know of a resource, book, pdf, or anything that is (not a reference website or an encyclopedia) a tutorial page on the atomic operations and multithreading library?
Thanks. I found a book on multithreading. It is called C++ Concurrency in Action. It talks a bit about memory orderings as well, but doesn't go into details on [[carries_dependency]] and whatnot. I will also post the link to a YouTube video I found about the c++ memory model so that future viewers that see this thread will be able to watch the video. I am still looking for some resources on dependencies.
doesn't go into details on [[carries_dependency]] and whatnot
I believe it is because of that:
Note that currently (2/2015) no known production compilers track dependency chains: consume operations are lifted to acquire operations.
It literally does nothing now. As it takes more practical approach, it skips over topics which are not implemented and unlikely to be implemented in near future. (like no book will talk about exporting templates: no one support that)
FWIW, 'C++ Templates: The Complete Guide' (Vandevoorde and Josuttis) did cover the C++ template separation model and the export keyword in excruciating detail. At that time, support was limited to compilers with an EDG front-end (Comeau, ICC and perhaps the HP compiler).
It's history now; C++11 removed the feature altogether.
The export keyword is unused but is reserved for future use.
A valid C ++ 2003 declaration containing export is ill-formed in this International Standard.