Ваш код не является многопоточным автоматически компилятором, если это был ваш вопрос.Обратите внимание, что сами стандарты C ничего не знают о многопоточности, поскольку то, можете ли вы использовать многопоточность, зависит не от языка, который вы используете для кодирования, а от платформы назначения, для которой вы кодируете.Код, написанный на C, может работать практически на всем, для чего существует компилятор C.Компилятор переменного тока даже существует для компьютера C64 (почти полностью соответствует ISO-99);однако для поддержки нескольких потоков платформа должна иметь операционную систему, поддерживающую это, и обычно это означает, что должна присутствовать хотя бы определенная функциональность ЦП.Операционная система может выполнять многопоточность почти исключительно в программном обеспечении, это будет ужасно медленно и не будет защиты памяти, но это возможно, однако даже в этом случае вам нужны как минимум программируемые прерывания.
Так какнаписание многопоточного C-кода полностью зависит от операционной системы вашей целевой платформы.Существуют системы, соответствующие POSIX (OS X, FreeBSD, Linux и т. Д.), И системы, для которых есть своя библиотека (Windows).В некоторых системах есть больше, чем просто библиотека (например, OS X имеет библиотеку POSIX, но есть и менеджер углеродных потоков, который вы можете использовать в C (хотя я думаю, что это довольно унаследовано в настоящее время).
Конечносуществуют кросс-платформенные библиотеки потоков, и некоторые современные компиляторы поддерживают такие вещи, как OpenMP, где компилятор автоматически создает код для создания потоков на выбранной вами целевой платформе, но не многие компиляторы поддерживают его, и те, которые поддерживают его, обычно не поддерживаютКак правило, вы получаете самую широкую поддержку системы, используя потоки POSIX, чаще называемые «pthreads». Единственной основной платформой, не поддерживающей ее, является Windows, и здесь вы можете использовать бесплатные сторонние библиотеки, такие как , эту . Несколькосуществуют и другие порты ( у Cygwin наверняка есть). Если у вас когда-нибудь будет пользовательский интерфейс, вы можете использовать кросс-платформенную библиотеку, такую как wxWidgets или SDL , оба предлагают согласованную многопоточную поддержку для всехпортированные платформы.