Это зависит от того, на каком уровне вы решили работать. Intel TBB и OpenMP обрабатывают много общих случаев с довольно высокого уровня. Потоки Posix, API-интерфейсы Windows и переносимые библиотеки, такие как потоки Boost, приближают вас к тому же уровню, что и примитивы в Java.
C ++ 0x многопоточность (особенно с барьерами памяти получения и выпуска) позволяет вам перейти на еще более низкий уровень для большего контроля и сложности, чем предлагает Java (выделение переменной volatile
в Java дает ей как приобретение, так и освободить барьер памяти, но в Java вы не можете запрашивать только получение или только барьер освобождения; где в C ++ 0x вы можете).
Обратите внимание, что модель многопоточности C ++ 0x преднамеренно низка, в надежде на то, что люди будут строить такие вещи, как TBB, и в следующий раз, когда комитет по стандартизации соберется, они смогут выяснить, кто из этих более высоких библиотеки уровней и инструментарий работают достаточно хорошо, чтобы учиться у них.