1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cxxjava-CxxFiber

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

CxxFiber

Библиотека волокон C++

Содержание

Характеристики

  • Кроссплатформенность: поддержка Linux32/64, OSX64, поддержка C++98;
  • Высокая производительность: сильная сетевая производительность, поддерживает массовое совместное выполнение процессов, с тех пор нет проблемы C1000K;
  • Простота разработки: синхронный код, элегантный и простой API, эффективное развитие;
  • Поддержка смешанного программирования процессов, потоков и сопрограмм для совместного использования, выполнения своих функций.

Пример

C++:

#include "Eco.hh"

int main(int argc, const char **argv) {
    // Инициализация CxxJDK.
    ESystem::init(argc, argv);

    try {
        EFiberScheduler scheduler;

        scheduler.schedule([&](){
            EServerSocket ss;
            ss.setReuseAddress(true);
            ss.bind(8888);

            while (!gStopFlag) {
                // accept
                sp<ESocket> socket = ss.accept();
                if (socket != null) {
                    // создать новое волокно
                    scheduler.schedule([=](){
                        try {
                            char buf[512] = {0};
                            // чтение
                            EInputStream* is = socket->getInputStream();
                            int n = is->read(buf, sizeof(buf));
                            printf("read buf=%s\n", buf);

                            // запись
                            EOutputStream* os = socket->getOutputStream();
                            os->write(buf, n);
                        } catch (EIOException& e) {
                            e.printStackTrace();
                        } catch (...) {
                        }
                    });
                }
            }
        });

        // начать расписание
        scheduler.join(); // сигнал в режиме потока
        //scheduler.join(4); // многопоточный режим: 4 — количество потоков
    }
    catch (EException& e) {
        e.printStackTrace();
    } catch (...) {
        printf("catch all...\n");
    }

    ESystem::exit(0);

    return 0;
}

Дополнительные примеры:
testeco.cpp

Производительность

Программное окружение:

См. пример кода на C++: benchmark.cpp.

Аппаратное окружение:

Model Name:				MacBook Pro
Model Identifier:		MacBookPro10,2
Processor Speed:		2.6 GHz
Number of Processors:	1
Total Number of Cores:	2

Результаты тестирования: benchmark

Зависимости

Библиотека CxxFiber основана на CxxJDK.

Задачи

Поддержка win64.

Поддержка

Электронная почта: cxxjava@163.com

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Мощная библиотека волокон C++. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/cxxjava-CxxFiber.git
git@api.gitlife.ru:oschina-mirror/cxxjava-CxxFiber.git
oschina-mirror
cxxjava-CxxFiber
cxxjava-CxxFiber
master