In last week’s Lesson, a program spawned a single thread. This thread runs at the same time as the main program, interrupting text input (if you let it). Such fun! But a multithreaded program isn’t limited to running just two threads. Your code can spawn multiple threads, each running simultaneously.
Continue reading
The Elevator Ride
Difficulty: ★ ★ ★ ☆
I recently stayed at a resort with a tall hotel tower, over 30 stories. As I rode the elevator up to my floor, I thought about how the lift worked like a pointer traversing an array: The floors are elements. Each stop going up represents a passenger’s desired destination, as do stops on the return trip. My programmer brain was on fire!
Continue reading
Here a Thread, There a Thread
Better than forking — especially grandchild forking — is to use threads. These program chunks are more manageable than forking and they don’t recreate the entire program (process). Still, threads aren’t without their quirks. Further, they’re available only to the POSIX standard. Sorry, Windows.
Continue reading
Forking the Grandchildren
I wrote about forking a while back, in June 2015. The fork splits a program into two processes, each capable of handling different tasks simultaneously. The power behind this trick is the fork() function.
Continue reading
From Decimal Value to a String
The challenge for this month’s Exercise is to split a decimal value into its integer and fractional portions. But what if you need the fractional portion as a string?
Continue reading
Splitting a Decimal Value – Solution
Cleaving a decimal value into its integer and fractional portions is a neat trick, one that relies upon C natural capability to thwack off the decimal portion of a float when it’s recast as an integer. Knowing about this conversion makes solving this month’s Exercise a whole lot easier.
Continue reading
Conditional Expressions Used as Values
It was weird when I first saw it: A conditional expression used to determine a value. It sounds odd, but it works.
Continue reading
Splitting a Decimal Value
Difficulty: ★ ★ ☆ ☆
A floating point, or real number, has two parts: Before the decimal comes the integer part. After the decimal is the fractional part. Sometimes it’s necessary to split such a value, so that your code can deal separately with the integer and fractional parts.
Continue reading
Outputting an Unterminated Buffer
Properly formed strings in C are terminated with the null character, \0. Accept it or die!
However . . .
Continue reading
Desperately Freeing Allocated Memory
The critical issue about allocating and then freeing memory is to avoid a memory leak. This condition happens when a memory chunk gets lost, leaving the it lingering in RAM not doing anyone any good. Most often a memory leak occurs in a function.
Continue reading