Создание и управление потоками
Используйте потоки POSIX (pthread) для создания и управления потоками в C
«Создание и управление потоками» — бесплатный урок C Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 3 уроков всего.
Создание потоков и управление ими
Создание потоков и управление ими
При использовании многопоточности мы создаём несколько потоков для одновременного выполнения задач.
В этом уроке Вы узнаете:
- Как создавать несколько потоков в C.
- Как ожидать завершения потоков.
- Как передавать аргументы потокам.

Создание нескольких потоков
Создание нескольких потоков
Для создания нескольких потоков используется pthread_create().
Синтаксис:
pthread_create(&thread, NULL, function, argument);
Каждый поток выполняется независимо, но использует общую память с другими потоками.
Пример: создание нескольких потоков
Пример: создание нескольких потоков
Эта программа создаёт несколько потоков, которые выполняются одновременно.
#include <stdio.h>
#include <pthread.h>
void *printMessage(void *arg) {
printf("Thread %d: Hello from thread!\n", *(int*)arg);
return NULL;
}
int main() {
pthread_t threads[3];
int thread_ids[3] = {1, 2, 3};
for (int i = 0; i < 3; i++) {
pthread_create(&threads[i], NULL, printMessage, &thread_ids[i]);
}
for (int i = 0; i < 3; i++) {
pthread_join(threads[i], NULL);
}
return 0;
}Ожидание завершения потоков
Ожидание завершения потоков
Используйте pthread_join(), чтобы дождаться завершения потока.
Синтаксис:
pthread_join(thread, NULL);
Без pthread_join() главный поток может завершиться до того, как завершатся остальные потоки.
Передача аргументов потокам
Передача аргументов потокам
Аргументы можно передать функции потока с помощью указателя.
Пример:
pthread_create(&thread, NULL, function, (void*)&value);
Функция потока преобразует аргумент обратно к его исходному типу.
Пример: передача аргументов потокам
Пример: передача аргументов потокам
Эта программа демонстрирует передачу аргументов функции потока.
#include <stdio.h>
#include <pthread.h>
void *printNumber(void *arg) {
int num = *(int*)arg;
printf("Thread received number: %d\n", num);
return NULL;
}
int main() {
pthread_t thread;
int value = 10;
pthread_create(&thread, NULL, printNumber, &value);
pthread_join(thread, NULL);
return 0;
}Завершение потока
Завершение потока
Используйте pthread_exit(), чтобы явно завершить поток.
Пример:
pthread_exit(NULL);
При необходимости главная функция также должна вызвать pthread_exit().
Рекомендации по управлению потоками
Рекомендации по управлению потоками
Чтобы эффективно управлять потоками:
- Всегда используйте
pthread_join(), чтобы избежать преждевременного завершения. - Передавайте аргументы с помощью указателей, чтобы избежать повреждения данных.
- Сведите к минимуму конфликты при доступе к общим ресурсам.
Итоги
Итоги
В этом уроке Вы узнали:
- Как создавать несколько потоков с помощью
pthread_create(). - Как ожидать завершения потоков с помощью
pthread_join(). - Как передавать аргументы потокам.
- Как безопасно завершать поток.
Далее мы рассмотрим синхронизацию и состояния гонки в многопоточности!

Часто задаваемые вопросы
Урок «Создание и управление потоками» бесплатный?
Да — полный текст урока «Создание и управление потоками» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 3 уроков всего.
Чему я научусь в уроке «Создание и управление потоками»?
Используйте потоки POSIX (pthread) для создания и управления потоками в C Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C Academy?
Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Создание и управление потоками»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C Academy?
Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Знакомство с потоками
- Создание и управление потоками
- Синхронизация и состояния гонки