Book Image

Extreme C

By : Kamran Amini
5 (1)
Book Image

Extreme C

5 (1)
By: Kamran Amini

Overview of this book

There’s a lot more to C than knowing the language syntax. The industry looks for developers with a rigorous, scientific understanding of the principles and practices. Extreme C will teach you to use C’s advanced low-level power to write effective, efficient systems. This intensive, practical guide will help you become an expert C programmer. Building on your existing C knowledge, you will master preprocessor directives, macros, conditional compilation, pointers, and much more. You will gain new insight into algorithm design, functions, and structures. You will discover how C helps you squeeze maximum performance out of critical, resource-constrained applications. C still plays a critical role in 21st-century programming, remaining the core language for precision engineering, aviations, space research, and more. This book shows how C works with Unix, how to implement OO principles in C, and fully covers multi-processing. In Extreme C, Amini encourages you to think, question, apply, and experiment for yourself. The book is essential for anybody who wants to take their C to the next level.
Table of Contents (23 chapters)

Shared states

In the previous section, we talked about the patterns suggesting that we require a concurrent system of tasks. Before that, we also briefly explained how the uncertainty in the pattern of context switches during the execution of a number of concurrent tasks, together with having a modifiable shared state, can lead to non-determinism occurring in the overall states of all tasks. This section provides an example to demonstrate how this non-determinism can be problematic in a simple program.

In this section, we are going to continue our discussion and bring in shared states to see how they contribute to the non-determinism we talked about. As a programmer, the term state should remind you of a set of variables and their corresponding values at a specific time. Therefore, when we are talking about the overall state of a task, as we defined it in the first section, we are referring to the set of all existing non-shared variables, together with their corresponding values...