官术网_书友最值得收藏!

  • Mastering C# Concurrency
  • Eugene Agafonov Andrew Koryavchenko
  • 248字
  • 2021-07-09 21:26:05

Chapter 1. Traditional Concurrency

Speaking of concurrency, we have to start talking about threads. Ironically, the reason behind implementing threads was to isolate programs from each other. Back in the early days of Windows, versions 3.* used cooperative multitasking. This meant that the operating system executed all the programs on a single execution loop, and if one of those programs hung, every other program and the operating system itself would stop responding as well and then it would be required to reboot the machine to resolve this problem.

To create a more robust environment, the OS had to learn how to give every program its own piece of CPU, so if one program entered an infinite loop, the others would still be able to use the CPU for their own needs. A thread is an implementation of this concept. The threads allow implementing preemptive multitasking, where instead of the application deciding when to yield control to another application, the OS controls how much CPU time to give to each application.

When CPUs started to have multiple cores, it became more beneficial to make full use of the computational capability available. The use of the threads directly by applications suddenly became more worthwhile. However, when exploring multithreading issues, such as how to share the data between the threads safely, the set-up time of the threads immediately become evident.

In this chapter, we will consider the basic concurrent programming pitfalls and the traditional approach to deal with them.

主站蜘蛛池模板: 福州市| 洛南县| 曲阳县| 乡城县| 玛曲县| 都昌县| 阿克苏市| 锡林浩特市| 江油市| 敦煌市| 武威市| 武平县| 海安县| 灌云县| 威宁| 灵丘县| 涿鹿县| 巴楚县| 贵定县| 武城县| 日照市| 收藏| 通道| 临漳县| 灵武市| 仁化县| 辉县市| 寻甸| 清河县| 澄城县| 潜山县| 手游| 汝南县| 托克逊县| 芦山县| 尉氏县| 江津市| 奉化市| 镇远县| 漳州市| 宜阳县|