Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When knowledge of "multithreading" is specified in a C++ job description, what is the expectation?

I understand it should cover threading primitives (mutex, semaphore, condition variables etc.) plus design patterns (such as those specified in POSA2). But what's more? Every project has its own multithreading scenarios and one may have not dealt with those that the job is expecting?. So how does one build their knowledge and prove that they have the ability?

like image 494
VKs Avatar asked Dec 23 '22 03:12

VKs


2 Answers

Regardless of specifics solid, detailed and very deep knowledge is required. One should understand how the bottlenecks form, how to deal with scalability problems, how to diagnose cases where synchronization is required but is erroneously omitted.

If for example you had a job experience with multithreading and I ran an interview to assess you I'd ask detailed questions on typical scenarios that arise when developing multithreaded programs. I wouldn't expect you knew many technologies or some specific technology, but I'd expect you to have mastered the technology you claim you're familiar with in great detail and to understand which fundamental problems it solves and how.

like image 191
sharptooth Avatar answered Mar 15 '23 22:03

sharptooth


I would expect the candidate has knowledge and experience of the issues that arise when multiple threads access shared resources. What problems can be caused by concurrent access and what problems the solutions (such as locking etc) present.

At the very least understanding of how to write and read asych code on the platform of choice.

After this it will be understanding the specifics if the platform - e.g. such how to access the primary window in windows system while many things needs up the display at the same time.

Fundamentally is about understanding what trade-offs are needed and when.

like image 30
Preet Sangha Avatar answered Mar 16 '23 00:03

Preet Sangha