Threads are not the answer -- Lucian Radu Teodorescu

You have a performance problem, you want to employ parallelism, you start adding threads... pause a moment and reflect

Threads are not the answer

by Lucian Radu Teodorescu

From the article:

Whatever the problem is, threads are not the answer. At least, not to most software engineers.

In this post I will attack the traditional way in which we write concurrent applications (mostly in C++, but also in other languages). It’s not that concurrency it’s bad, it’s just we are doing it wrong.

The abstractions that we apply in industry to make our programs concurrent-enabled are wrong. Moreover, it seems that the way this subject is thought in universities is also wrong.

Look ma, no locks -- Lucian Radu Teodorescu

How can you solve the core problem in concurrent programming? How can you avoid using locks, but still have safety for your resources?

Look ma, no locks

by Lucian Radu Teodorescu

From the article:

We previously argued that threads are not the answer to parallelism problems, and also that we should avoid locks as much as possible. But how can we have a world in which threads do not block each other?

We want to explore here a systematic way for replacing locks (mutexes, read-write mutexes, semaphores) in our systems with tasks. We argue that there is a general schema that allows us to move from a world full of locks to a world without locks, in which the simple planning and execution of tasks makes things simpler and more efficient.

Advanced Programming in C++ (Spanish) in Madrid -- Daniel Garcia

This course is offered in Spanish (might be available in English on demand).

Advanced Programming in C++

by Daniel Garcia

About the course:

The course is a 3 full-days training (24 hours) covering C++11, C++14, and an introduction to C++17 at March 25th, 26th, 27th, 2019 in Madrid. It is structured in 4 modules:

  • Language (Generalities and type system, Initialization, classes, global novelties, generic programming support).
  • Standards library (Metaprogramming support, utilities, STL, strings).
  • Concurrency (Introduction to concurrency, memory model, threads, mutual exclusion, futures and promises).
  • Introduction to C++17

About the trainer:

J. Daniel Garcia is an Associate Professor in Computer Architecture at University Carlos III of Madrid, Spain. He has extensive experience in industrial project in domains ranging from aerospace and civil engineering to medical technology and finance.

Since 2008 he has served as a member of WG21 (C++ standards committee) as well as chair of the Spanish committee on C++. He has co-authored a number of proposals for C++, since C++11. His main efforts for C++20 are related to the introduction of contracts programming.

Announcing Live Share for C++: Real-Time Sharing and Collaboration

VS2019 preview 1 is available and comes with a number of new C++ features, including Live Share for collaborative coding.

Announcing Live Share for C++: Real-Time Sharing and Collaboration

By Nick Uhlenhuth

From the article:

C++ developers using Visual Studio 2019 16.0 Preview 1 or Visual Studio Code can now use Live Share. With Live Share you can share the full context of your code, enabling collaborative editing and debugging.

Exploring Clang Tooling – Using Build Tools with clang-tidy--Stephen Kelly

Today about clang-tidy.

Exploring Clang Tooling – Using Build Tools with clang-tidy

by Stephen Kelly

From the article:

The previous series about clang-tidy on this blog covered the basics of creating a clang-tidy extension and tooling to support that in the form of clang-query.

While the series focused on single-file examples for simplicity, developers progressing in this direction will need to run the tooling on all of the files in their project at once, or on all files which match a specific pattern.

Better template support and error detection in C++ Modules with MSVC 2017 version 15.9--Cameron DaCa

It continues to improve.

Better template support and error detection in C++ Modules with MSVC 2017 version 15.9

by Cameron DaCamara

From the article:

It has been a long time since we last talked about C++ Modules. We feel it is time to revisit what has been happening under the hood of MSVC for modules.

The Visual C++ Team has been dedicated to pushing conformance to the standard with a focus on making the overall compiler implementation more robust and correct with the rejuvenation effort. This rejuvenation effort has given us the ability to substantially improve our modules implementation. We’ve mostly done this work transparently over the past few months until now. We are proud to say the work has reached a point where talking about it would hopefully provide developers with even more reasons to use C++ Modules with MSVC!

CppCast Episode 177: BDD, TDD, Low Latency and CppCon with Lenny Maiorani

Episode 177 of CppCast the first podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Lenny Maiorani to discuss TDD, BDD, Low Latency and CppCon moving to Denver.

CppCast Episode 177: BDD, TDD, Low Latency and CppCon with Lenny Maiorani

by Rob Irving and Jason Turner

About the interviewee:

Lenny has been using C++ off and on since 1995. Since graduating from SUNY Plattsburgh with a degree in Computer Science, he has been working at startups focused on high-throughput applications. About 2 years ago he joined Quantlab and discovered a different type of high-performance computing in low latency systems. Lenny lives in Denver, Colorado with his wife Lexey and their dog. He can be found hiking in the Colorado mountains while thinking about container access patterns and wondering if std::map can be renamed to std::ordered_map.