Вы всегда должны рассмотреть возможность использования потоков; особенно в современном оборудовании. Если у вас есть работа, которая может быть логически разделена в сопрограммах, использование потоков означает, что работа может фактически выполняться одновременно, отдельными исполнительными блоками (ядрами процессора).
Но, возможно, вы действительно хотите использовать сопрограммы, возможно, потому что у вас есть хорошо протестированный алгоритм, который уже был написан и протестирован таким образом, или потому что вы переносите код, написанный таким образом.
Если вы работаете в Windows, вы должны взглянуть на волокон . Волокна предоставят вам сопроводительную структуру с поддержкой ОС.
Я не знаком с другими ОС, чтобы рекомендовать альтернативы там.