/
bvs22
/
draft
Обзор
Документация
Войти
/
bvs22
/
draft
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
threads/ping_pong.c
62 строки
1 KB
bvs22
ping pong programm using threads
30 ноя 2024, 12:17
30 ноя 2024, 12:17
64c870f
Код
Авторство
О чём код?
#include <stdio.h> #include <pthread.h> #define COUNT_CYCLE 5 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int flag = 0; void *ping_func(void *args) { for (int i = 0; i < COUNT_CYCLE; i++) { pthread_mutex_lock(&mutex); while (flag != 0) { pthread_cond_wait(&cond, &mutex); } printf("ping\n"); flag = 1; pthread_mutex_unlock(&mutex); pthread_cond_signal(&cond); } pthread_exit(NULL); } void *pong_func(void *args) { for (int i = 0; i < COUNT_CYCLE; i++) { pthread_mutex_lock(&mutex); while (flag == 0) { pthread_cond_wait(&cond, &mutex); } printf("pong\n"); flag = 0; pthread_mutex_unlock(&mutex); pthread_cond_signal(&cond); } pthread_exit(NULL); } int main() { pthread_t ping, pong; pthread_create(&ping, NULL, ping_func, NULL); pthread_create(&pong, NULL, pong_func, NULL); pthread_join(ping, NULL); pthread_join(pong, NULL); return 0; }