Latches in C++20
Latches and barriers are coordination types that enable some threads to wait until a counter becomes zero. You can use a std::latch only once, but you can use a std::barrier more than once. Today, I have a closer look at latches.
The latest blog posts to take off on Hacker News. 4,389 posts.
Latches and barriers are coordination types that enable some threads to wait until a counter becomes zero. You can use a std::latch only once, but you can use a std::barrier more than once. Today, I have a closer look at latches.
Less than a month ago, I began investigating the Apple M1 GPU in hopes of developing a free and open-source driver. This week, I’ve reached a second milestone: drawing a triangle with my own open-source code. The vertex and fragment shaders are handwritten in machine code, and I interface with the hardware via the…
Differential dataflow is a library that lets you write simple dataflow programs and a) then runs them in parallel and b) efficiently updates the outputs when new inputs arrive. Compared to competition like spark and kafka streams , it can handle more complex computations and provides dramatically better throughput and…
Posts and writings by Lennart Poettering
I wanted to share a story of a segmentation fault I helped track down this weekend. I thought the final root cause of the segfault was interesting because of how unrelated it was to the code I was trying to debug.
Note: This post is only kept up for historical reasons. The current ExaGear EULA doesn’t allow using ExaGear outside of Huawei Kunpeng processors.
A couple months back I switched my terminal from xfce4-terminal to the venerable xterm. For some reason I always put xterm in the same bucket as xclock, xmessage, or any other prehistoric command starting with X that comes pre-installed on any graphical Linux distribution.
GNOME filepicker and my toilets are broken because of culture of mediocrity.
That standard image that explains the difference between on-premises, IAAS, PAAS, and SAAS in the cloud? You know what, it is hugely misleading. Here is the real deal.
When I ask my colleagues why mmap is faster than system calls, the answer is inevitably “system call overhead”: the cost of crossing the…
Apple’s latest line of Macs includes their in-house “M1” system-on-chip, featuring a custom GPU. This poses a problem for those of us in the Asahi Linux project who wish to run Linux on our devices, as this custom Apple GPU has neither public documentation nor open source drivers. Some speculate it might descend from…
A post describing a simple example how you can create your own manual error recovery solution based on what is used in RAID-6, in Python.
When a program is mostly just accessing memory randomly, a standard cost model is to count the number of distinct random accesses. The general idea is that memory access is much slower than most other computational tasks. Furthermore, the cost model can be extended to count "nearby" memory accesses as free. That is…
What connections are, how they affect our systems, and how and why pooling works.
If you're building an application that needs to scale—and we all tell ourselves that we are—then at some point you have to figure out if it does or not. This is where load testing comes in: if you want to see whether or not your application can handle scale, just generate scale and see if it can handle it! It sounds…
Update: As of Sunday morn...
In the classic 1986 essay, No Silver Bullet , Fred Brooks argued that there is, in some sense, not that much that can be done to improve programmer productivity. His line of reasoning is that programming tasks contain a core of essential/conceptual 1 complexity that's fundamentally not amenable to attack by any…
"Systems design" is a branch of study that tries to find universal architectural patterns that are valid across disciplines. You might thin...