In the context of https://issues.apache.org/jira/browse/ARROW-9318 / https://github.com/apache/arrow/pull/8023 which port the parquet-mr design to c++: there's some question whether that design is consistent with the style and conventions of the c++ implementation of parquet.
Here is a Gist with a sketched alternative design adapted to c++ https://gist.github.com/bkietz/f701d32add6f5a2aeed89ce36a443d43 Specific concerns in brief: - Multiple internal classes are left public in header files, where it would be preferred that public classes be kept to a minimum. - Several levels of explicit synchronization with mutexes are used to guarantee that each class is completely thread safe, but this is unnecessary overhead given the pattern of use of `parquet-cpp`.