UI frameworks distinguish one main thread with event loop. This is true for all widely spread frameworks in Java, C#, C++ and other languages. Even without additional threads there are problems with UI smoothness, reentrancy, mixing legacy blocking and new non-blocking code. If we want to use full power of contemporary CPUs for multithreading we have to invent non-trivial threading model (and invent even more sophisticated if we build multiprocess application).
Different models will be shown and experience of developing big desktop application like IntellijIDEA, ReSharper and Rider will be presented. We will see specific problems and solutions related to UI applications with heterogeneous threads: reentrancy guards, main thread lifetime, progress and cancellation, blocking garbage collection and others. Several diagnostics tools for UI responsiveness analysis and race conditions detection will be covered. Some design flaws of existing threading models and funny problems like one-thread deadlock will be shown.
Developers who want to build modern concurrent UI applications are welcome. The talk will help you to avoid many pitfalls and make familiar with several approaches and tools that are invaluable for development in this area.
Program committee comment
Dmitry has a vast experience in developing efficient and complicated UI applications and was a technical lead in the ReSharper (an extension for Visual Studio) team at JetBrains before he moved to Huawei. In this talk, he covers the typical patterns to build fast and asynchronous UI and discusses them from a practical perspective.