- 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.
- Learning Scala Programming
- GraphQL學習指南
- Boost C++ Application Development Cookbook(Second Edition)
- NativeScript for Angular Mobile Development
- Essential Angular
- NGINX Cookbook
- Multithreading in C# 5.0 Cookbook
- 第一行代碼 C語言(視頻講解版)
- Android傳感器開發與智能設備案例實戰
- Clojure for Java Developers
- Java高并發編程詳解:深入理解并發核心庫
- C/C++代碼調試的藝術
- ASP.NET Core 2 High Performance(Second Edition)
- Visual FoxPro數據庫程序設計
- 精通Oracle 12c 數據庫管理