#c
#c
Вопрос:
Платформа: Windows XP Процессор: двухъядерный
У меня есть программа, написанная на языке C, которая компилируется и формируется ее exe. Мой вопрос в том, будет ли программа использовать оба ядра (поскольку моя машина двухъядерная), или я должен сделать свою программу многопоточной, чтобы сделать это?
Комментарии:
1. Как именно вы ожидаете, что один поток будет выполняться одновременно на 2 ядрах?
2. Вообще говоря, вы должны сделать свою программу многопоточной, чтобы использовать более одного ядра. Однако, если вы используете библиотеку, которая использует многопоточность, вам, возможно, не придется беспокоиться об этом. Вы могли бы улучшить свой вопрос, опубликовав некоторый код.
3. Одна из причин наличия многоядерных процессоров заключается в том, что ОС может выполнять работу даже во время работы вашей программы… ваш текстовый процессор может выполнять сохранение в фоновом режиме
4. Ну, во время его выполнения он может чередоваться с использованием ядер, если он переносится из очереди выполнения одного ядра в другое…
Ответ №1:
Вы должны реализовать многопоточную программу, если хотите использовать несколько ядер.
Существует множество потоковых библиотек. Я бы порекомендовал вам заглянуть на веб-сайт OpenMP, который довольно легко интегрировать и использовать для распараллеливания.
РЕДАКТИРОВАТЬ: простой пример:
Обычно вы можете распараллелить свои for
циклы, просто добавив:
#pragma omp parallel
for(...)
Конечно, вам нужно выполнить ссылку на OpenMP и скомпилировать с поддержкой OpenMP.
Комментарии:
1. В C нет ничего бесплатного, кроме веревки. 🙂
2. В C вы тоже платите за веревку 🙂
Ответ №2:
краткий ответ: вы должны сделать свою программу многопоточной, чтобы использовать оба ядра.
Ответ №3:
одновременно один процессор может выполнять только одну программу. итак, вам нужно создать поток и выполнить оба одновременно, чтобы использовать двухъядерный процессор.