What is Akademy? Akademy is the yearly conference for the KDE community, which is a community devoted to creating free software for desktop and mobile. Typically, Akademy takes place in a different city each year. However, due to the pandemic, the conference was online this time around. September 4-11 marked the dates of Akademy 2020. […]
Blog Archives
The Eight Rules of Multithreaded Qt The biggest dos and don'ts for multi-threading in Qt
While the concept of multithreading may be straightforward, code with threads is responsible for some wicked bugs, which can be nearly impossible to reproduce or track down. This makes writing bullet-proof code using threads a tall order. Let’s look a little deeper into why that is. First, you need better than average knowledge about the […]
Qt 3D: One too many threads or what has changed in 5.14
Qt 3D makes heavy use of threads, as a way to spread work across CPU cores and maximize throughput, but also to minimize the chances of blocking the main thread. Though nice on paper, the last case eventually leads to added complexity. Sometimes, there are just one too many threads. In the past, we’ve been […]
Little Trouble in Big Data – Part 2 improving CPU utilization across cores
Little Trouble in Big Data – Part 1 how to use mmap() to load a large data set into RAM
New in Qt 5.10: QThread::create
If you are using Qt and you need to run some code in a separate thread, chances are that you are using QThread for the job. QThread is a very old class in Qt, making its first appearance in Qt 2.2, released on the 22nd of September 2000. Its responsibility is to start a new […]
A Race is a Race is a Race is UB An example of the difference between int, volatile int, and std::atomic
In the last days, I was once again trying to convince fellow programmers that there’s no such thing as a “benign” data race. This is a recurring theme, in particular fueled by the docs of MSVC and Intel x86, which basically seem to say “you don’t need atomics here”. I perused the excellent papers Benign […]
Multithreading with Qt How to leverage the modern C++11 threading capabilities in your Qt application
This talk introduces you to the fundamentals of threading in Qt. We will discuss how threads, QObjects and events interact together; how a thread affinity of a QObject has a play in signals and slots connections; and how you can leverage the modern C++11 threading capabilities in your Qt application. Cross-platform thread support was introduced […]
How to use helgrind to debug multithreaded Qt applications Finding thread race conditions in Qt4 and Qt 5
You’ve heard of valgrind before, its default tool (memcheck) is such a life saver, being able to detect memory-related bugs in your code (leaks, double deletions, use of deleted memory, use of uninitialized memory, etc.). Well, it turns out that valgrind also comes with a tool to detect race conditions between threads, in multithreaded applications. […]