Hello C++ developers, multi-thread operations evolved significantly with the advent of C++11, and this continued with additional improvements in the latest standards to enhance multi-thread operations further. The concurrency support library in modern C++ is designed to solve problems that can arise with multi-thread operations. According to the latest news about the new coming C++ Builder 12.0, there might be a new CLANG 15 Win64 compiler and a new Visual Assist in the IDE. This week we have notes about the presentation of “New coming C++ Builder 12.0” along with new posts about multi-thread operations, atomics, data-race problems and how to solve them, bidirectional fences, as well as strong compare and exchange templates.
RAD Studio’s C++ Builder, Delphi, and their free community editions C++ Builder CE, and Delphi CE are a real force for modern application development. LearnCPlusPlus.org web page is another powerful element for learning new skills of modern C++ programming.
Our educational LearnCPlusPlus.org site has a whole bunch of new and unique posts with examples suitable for everyone from beginners to professionals alike. It is growing well thanks to you, and we have many new readers, thanks to your support! The site features a plethora of posts that are great for learning the features of modern C++ compilers with very simple explanations and examples.
Table of Contents
Where I can I learn C++ and test these examples with a free C++ compiler?
If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of great examples on the LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the type of post. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new articles with very simple examples that can be used with:
- The free version of C++ Builder 11 CE Community Edition
- or a professional version of C++ Builder
- or free BCC32C C++ Compiler and BCC32X C++ Compiler
- or the free Dev-C++
Do you want to know some more news about C++ Builder 12?
David Millington, Developer and Product Manager of C++ Builder just released a new video about “Behind the Build: RAD Studio and C++Builder 12.0”. According to David Millington’s post, C++ Builder is aiming to include some amazing features and a lot of performance improvements in operations. C++Builder 12 plans to bring some massive improvements, the enhanced Clang toolchain and Visual Assist integration, substantial improvements across RTL, STL, debugging, and more. Here is the full presentation,
Here are a few of my notes,
- Comes with a special CLANG 15 Win64 compiler
– Win64 is a primary OS
– New Clang means support for C++20 and a lot of C++23 features
– Important to have more compatible standards and amazingly faster
– In memory allocation operations, it is 6 to 14% faster than the current CLANG Win64 compiler in C++ Builder
– In unordered map hashing, STL performance is 60 to 70% faster than the current CLANG Win64, and 40 to 70% faster than the current CLANG Win32 in C++ Builder
- Comes with a new Visual Assist in the IDE
– Fast code completion
– Navigation and refactoring
– and more
- Debugging will use PDB outputs within the IDE
- VCL and FMX have not adopted yet, this may take time
- This presentation is an early preview, unfiltered and incomplete, they do not promise these features to be in 12.0
Please note that all comments and statements about potential new features are subject to change and should not be relied on until the GA release of a product is available.
Note that, previously, this year Embarcadero announced the release of RAD Studio 11 Alexandria Release 3, also known as RAD Studio 11.3, along with Delphi 11.3 and C++Builder 11.3. This release is focused on quality and improvements, building on the great new features in RAD Studio 11 Alexandria three previous releases.
How can I use atomic operations in C++ Builder?
Using multi-threading development skills on the CPU, GPU, and memory operations is important in programming, but it can give rise to problems in synchronization of multi-thread operations and reaching data for reading and writing. The concurrency support library in modern C++ is designed to help solve problems in multi-thread operations. Since the C++11 standard, this library includes built-in support for threads (
std::thread) with atomic operations (
memory_order type definition defines how to access memory in multi-thread operations, including atomic, regular, and non-atomic memory accesses. In the first post, we explain how to use
std::memory_order in modern multi-threading operations.
If you are developing multithreaded modern applications, data races are a common problem in threads. Data races occur when multiple tasks or threads attempt to access a shared resource at the same time without sufficient protection, leading to undefined or unpredictable behavior at runtime. You can imagine two or more task threads in cores trying to reach the same data in a race. In the next post, we explain what a data race is and how to avoid it in modern C++. In the other post, we have an example of how to solve these kinds of data race problems in modern C++.
C++11 improved the support for bidirectional fences in multi-thread applications. In modern C++ development, Fences are synchronization primitives in multi-threading operations, they are memory barriers in threads, and they can acquire semantics, release semantics, or both. In the next post, we explain what are fences and how we can use them.
C++11 provides both weak and strong compare-and-exchange operations in multi-threading applications. Since C++11, strong compare and exchange are used in modern C++ standards such as C++14, C++17, C++20, and in other new standards. In the last post pick, we explain what is strong compare and exchange is with simple examples.
What are atomic operations in C++ and how can I use them?
LearnCPlusPlus.org has been producing full of educational daily articles about C and modern C++ that can be used with C++ Builder, C++ Builder CE, Dev-C++, BCC Compiler and some other compilers such as the GCC compiler. Here are our post picks for today.
We like to hear your feedback. You motivate us so much with your likes and comments on social media (find us on Facebook, LinkedIn, Reddit, Twitter / X and all over) and here on the blogs too. Thank you for your valuable comments and questions. All of them help improve the quality of our future posts and new code in these posts.
We have a lot of unique posts waiting to come. We keep adding new topics every week about C++ in general and specific topics for C++ Builder, Dev-C++, and for the other C++ compilers. Please keep following our LearnCPlusPlus.org website for the latest posts and updates. Feel free to comment and share with your colleagues, students, members – knowledge is power, and knowledge shared is empowering. .
C++ Builder is the easiest and fastest C and C++ IDE for building simple or professional applications on the Windows, MacOS, iOS & Android operating systems. It is also easy for beginners to learn with its wide range of samples, tutorials, help files, and LSP support for code. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for cross-platform UIs.
There is a free C++ Builder Community Edition for students, beginners, and startups; it can be downloaded from here. For professional developers, there are Professional, Architect, or Enterprise version.