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

Introduction

At some point of time in the past, the common computer had only one computing unit and could not execute several computing tasks simultaneously. However, operating systems could already work with multiple programs simultaneously, implementing the concept of multitasking. To prevent the possibility of one program taking control of the CPU forever, causing other applications and the operating system itself to hang, the operating systems had to split a physical computing unit across a few virtualized processors in some way and give a certain amount of computing power to each executing program. Moreover, an operating system must always have priority access to the CPU and should be able to prioritize CPU access to different programs. A thread is an implementation of this concept. It could be considered as a virtual processor that is given to the one specific program and runs it independently.

Note

Remember that a thread consumes a significant amount of operating system resources. Trying to share one physical processor across many threads will lead to a situation where an operating system is busy just managing threads instead of running programs.

Therefore, while it was possible to enhance computer processors, making them execute more and more commands per second, working with threads was usually an operating system task. There was no sense in trying to compute some tasks in parallel on a single-core CPU because it would take more time than running those computations sequentially. However, when processors started to have more computing cores, older programs could not take advantage of this because they just used one processor core.

To use a modern processor's computing power effectively, it is very important to be able to compose a program in a way that it can use more than one computing core, which leads to organizing it as several threads that communicate and synchronize with each other.

The recipes in this chapter focus on performing some very basic operations with threads in the C# language. We will cover a thread's life cycle, which includes creating, suspending, making a thread wait, and aborting a thread, and then, we will go through the basic synchronization techniques.

主站蜘蛛池模板: 博湖县| 金川县| 繁峙县| 白城市| 庆阳市| 盐源县| 额济纳旗| 东平县| 陇南市| 云霄县| 赞皇县| 祁阳县| 西华县| 冷水江市| 双桥区| 达州市| 从江县| 华容县| 汝南县| 方正县| 泰兴市| 大庆市| 泸水县| 衡阳县| 砚山县| 宜城市| 博野县| 贞丰县| 青州市| 桓仁| 嘉禾县| 都安| 怀宁县| 尼玛县| 满洲里市| 沅江市| 玉龙| 平湖市| 郑州市| 磴口县| 海口市|