Потоки часто настолько сложны и настолько специфичны для реализации, что, я думаю, единственно верный способ оценить это - поставить им фиктивную задачу (в желаемой архитектуре) и «иметь ее». Что-то, что включает в себя конкурирующих читателей / писателей / рабочих - и пользовательский интерфейс, если это необходимо.
Конечно ... вам также нужно, чтобы кто-то был квалифицирован, чтобы оценить их усилия ...
Вы также можете говорить об общих принципах, но я не уверен, что это охватывает. Например, только вчера в области C # было много путаницы по поводу некоторых тонких проблем, связанных с моделью памяти, спецификацией языка и спецификацией clr. Вы не можете оценить этот тип деталей в неопределенных терминах; оно должно быть очень специфичным для проблемы.
Точно так же инструменты / подходы меняются в зависимости от структуры. В OCAML / F # и т. Д. очень другой код многопоточности для Java / C # - и даже это меняется в зависимости от версии (см. Parallel Extensions / TPL и такие вещи, как ReaderWriterLockSlim в 3.5 против ReaderWriterLock в 2.0)