How to make your C++ app independent of Visual C++ Runtime?
If you are developing the Visual C++ apps, then probably you have stumbled upon the problem that appears once you try to transfer the app ato another computer. The app shows MSVCR100.DLL (or MSVCR71.DLL) not found error.
The app is fully wonrking on your computer, so thats quite confusing. Official Microsoft documentation suggests that you install special Visual C++ redistributable component. But there are lots of versions of this component: different architecture (x86 or x64), different Visual Studio versions. etc. Sometimes these components are conflicting with each other. One version is working with one program, but needs to be reinstalled to work with another program... Quite a mess!
Fortunately enough, there is a way to fix the MSVCR100.DLL missing error without the need to install runtime. But how is it possible?
How to guarantee data consistency in multi-threaded environments?
If you are working in a multi-threaded environment, sooner or later you will stumble upon the situation with data corruption or exceptions due to unsynchronized access to common variables. For example, if you modify some member variable from two threads at the same time, there will be the so-called race conditions and the data may be inconsistent. To aid such a situation, you need to use an atomic lock object. The lock object in C# protects access to the variable from the different threads. Only one thread may access data at the same time.
Let's move to an example:
How to start several threads and wait them to finish in C#
If you need some work to be done in parallel, you will need to use threads. Usually, this work includes downloading some data from the server, processing multiple documents at once, launching several instances of the class at the same time, etc.
But how do you start several threads at once? Here is the code example: