Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Corobus - Coroutine Message Bus

Шина сообщений для кооперативной многозадачности с поддержкой корутин.

Описание:

Corobus реализует паттерн "Message Bus" для коммуникации между корутинами с автоматической блокировкой при переполнении/опустошении каналов.

Технологии:

Язык: C (C99)
Корутины: libcoro (пользовательские корутины)
Модель: Cooperative multitasking

Возможности:

Создание каналов с ограниченной емкостью
Блокирующие send/recv (с yield/wakeup)
Неблокирующие try_send/try_recv
Векторные операции (batch send/recv)
Broadcast рассылка
Автоматическое управление корутинами

Быстрый старт

Сборка:

gcc -Wall -Wextra -Werror -o test test.c corobus.c libcoro.c

Запуск тестов:

./test

API:

Создание шины:

struct corobus *bus = corobus_new();

Создание канала:

int channel = corobus_channel_new(bus, capacity);

Отправка/получение:

corobus_send(bus, channel, message);  // блокирует если полно
corobus_recv(bus, channel);            // блокирует если пусто
corobus_try_send(bus, channel, msg);   // не блокирует

Архитектура:

Coroutine Scheduler: Интеграция с libcoro
Channel Queues: Циркулярные буферы для каналов
Wait Lists: Списки заблокированных корутин
Yield/Wakeup: Механизм приостановки/возобновления

Особенности:

Кооперативная многозадачность (не потоки!)
Отсутствие мьютексов (всё в одном потоке)
Эффективное переключение контекста
Поддержка векторных операций

Тесты включают:

Тесты блокировок
Тесты broadcast
Векторные операции
Стресс-тесты с множеством корутин

About

Шина сообщений для кооперативной многозадачности с поддержкой корутин

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages