
Background: I am/was planning to profile the thread libraries from boost and ACE. During this experiment, I wish we had an interface class defined for threads. Also, I wish boost and ACE had implemented those interface classes. It would have helped someone like me profile different C++ libraries with ease.
I was going through the header files of boost and I don't see a interface classes being used. I am trying to understand was there a conscientious decision made to not define them. I am trying to understand the reason behind those decisions. It will help newbie's like me to understand C++ better and write better code.
Amit,
ACE and Boost are unrelated projects, and there's no universal thread "interface" to implement. This doesn't mean you can't design thin wrappers yourself for your experiment. Honest advise though - do not use ACE, even if you find it faster, which I very much doubt. Boost is a set of modern C++ libraries, pushing its way into standard C++, and developed by world experts; while ACE is dated, ugly, monolithic monster that forces you into wrong design choices.
<rant> Presumably, you:
1. Have your CV somewhere online, that lists some serious projects done with both ACE and Boost.
2. Have a blog post or article that specifically names the "wrong design choices" that ACE forces one into?
If so, can you provide links to those? </rant>
I *don't* have direct experience with ACE, so I'm not going to defend it here, and I also assume you have good reasons to criticise ACE, but your email does not communicate them well. Calling a established project a "ugly, monolithic monster" without good justification written down does not seem a constructive, or fair, thing. Especially given that Boost is fairly monolithic and fairly big, too.
- Volodya
This comes from direct experience with ACE. The library is full of evil macros, deep inheritance trees, C-style casts, etc. It hurts to even look at the source. It was built around early weak compilers and it shows. As for being monolithic - how about a single 5 MB shared library? All or nothing. With Boost I at least have a choice of what to build and what to link with. Take a look at their docs - you'll understand: http://www.dre.vanderbilt.edu/Doxygen/5.6.5/html/ace/index.html As for wrong design choices - just pickup a copy of "C++ Network Programming" (either volume) by D. Schmidt, et al. and see if you can honestly recommend it to anybody. If you're so inclined, you can find my CV and rants at www.fetissov.org. -- Nikolai