#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.
Аппаратное окружение:
Тип устройства: MacBook Pro
Идентификатор модели: MacBookPro10,2
Название процессора: Intel Core i5
Скорость процессора: 2.6 ГГц
Количество процессоров: 1
Общее количество ядер: 2
Результаты тестирования:
CxxFiber разработан на основе CxxJDK.
Поддержка платформы Win64.
Электронная почта: cxxjava@163.com
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )