For some reason, people tend to think that creating multi-threaded applications in C++ is a very difficult thing to do.
It is in fact not that difficult, but there are basically two main issues to consider: How to make the code correct (it should not crash, deadlock, corrupt data, etc...) and how to make it efficiently use as many cores as possible.
2011