Category: Programming
-
Gold Workqueues
The gold linker is multi-threaded. I’ll sketch the implementation I chose. I wanted to avoid using lots of fine-grained mutexes, because they are both error-prone and expensive. Instead, I used a workqueue system. This requires breaking up the job into, essentially, a state machine. The whole link is defined as a series of relatively independent…
-
Lock Collection
Memory management is a standard problem for programs written in C and C++. It is important to free memory when it is no longer needed, because otherwise you will run out. Unfortunately, it is complex to keep track of which memory is no longer needed. The symptoms of memory management problems are typically either running…
-
Again, Parallel Programming
Yesterday’s post was on the incoherent side, even for me. Let’s take it again, a little more slowly. Our brains are inherently parallel processors. Our selves are composed of many impulses, actions, and proto-thoughts. However, our logical thought, the inner voice we forced to use when writing programs (or, for that matter, when writing blog…
-
Sequential Thought
It is the common wisdom these days that future processors will have increasingly many cores but will not run at significantly higher clock rates. The constant drive for increased performance will come by letting the processor do more at one time, rather than by making it run faster. Along the same lines is the increased…
-
Crafty Programmers
I think of a programming as a craft, like making furniture. Despite the names that people use, it’s not science, it’s not engineering, and it’s not art. Since programming is a craft, it doesn’t advance the way that science and engineering do. Instead, we see waves of fashion, and we see adustments due to changes…