Browse Source

尝试使用gcc10

tags/2.9.10
tearshark 4 years ago
parent
commit
dd233e33cc
3 changed files with 37 additions and 39 deletions
  1. 5
    5
      CMakeLists.txt
  2. 27
    27
      librf/src/config.h
  3. 5
    7
      tutorial/test_async_modern_cb.cpp

+ 5
- 5
CMakeLists.txt View File

@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.14)
PROJECT(librf)
cmake_minimum_required(VERSION 3.10)
project(librf)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "-std=c++2a -fcoroutines-ts -stdlib=libc++")
@@ -8,7 +8,7 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS "/std:c++latest /await /EHsc")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "-std=c++2a -fcoroutines-ts")
set(CMAKE_CXX_FLAGS "-std=c++2a -fcoroutines")
endif()
message(STATUS "C++ flags: ${CMAKE_CXX_FLAGS}")
@@ -90,5 +90,5 @@ ${PROJECT_SOURCE_DIR}/test_librf.cpp
)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
add_executable(test ${TSRC})
target_link_libraries(test ${LIB_NAME})
add_executable(rf_tutorial ${TSRC})
target_link_libraries(rf_tutorial ${LIB_NAME})

+ 27
- 27
librf/src/config.h View File

@@ -1,27 +1,27 @@
#pragma once
#ifndef RESUMEF_INLINE_STATE
#if defined(__clang__) || defined(_MSC_VER)
#define RESUMEF_INLINE_STATE 1
#else
#define RESUMEF_INLINE_STATE 1
#endif //defined(__clang__) || defined(_MSC_VER)
#endif //RESUMEF_INLINE_STATE
#ifndef RESUMEF_DEBUG_COUNTER
/* #undef RESUMEF_DEBUG_COUNTER */
#endif //RESUMEF_DEBUG_COUNTER
#ifndef RESUMEF_ENABLE_CONCEPT
#ifdef __cpp_lib_concepts
#define RESUMEF_ENABLE_CONCEPT 0
#else
#define RESUMEF_ENABLE_CONCEPT 0
#endif //#ifdef __cpp_lib_concepts
#endif //#ifndef RESUMEF_ENABLE_CONCEPT
#ifndef _WITH_LOCK_FREE_Q_KEEP_REAL_SIZE
/* #undef _WITH_LOCK_FREE_Q_KEEP_REAL_SIZE */
#endif //_WITH_LOCK_FREE_Q_KEEP_REAL_SIZE
/* #undef RESUMEF_USE_CUSTOM_SPINLOCK */
#pragma once
#ifndef RESUMEF_INLINE_STATE
#if defined(__clang__) || defined(_MSC_VER)
/* #undef RESUMEF_INLINE_STATE */
#else
/* #undef RESUMEF_INLINE_STATE */
#endif //defined(__clang__) || defined(_MSC_VER)
#endif //RESUMEF_INLINE_STATE
#ifndef RESUMEF_DEBUG_COUNTER
/* #undef RESUMEF_DEBUG_COUNTER */
#endif //RESUMEF_DEBUG_COUNTER
#ifndef RESUMEF_ENABLE_CONCEPT
#ifdef __cpp_lib_concepts
#define RESUMEF_ENABLE_CONCEPT 1
#else
#define RESUMEF_ENABLE_CONCEPT 1
#endif //#ifdef __cpp_lib_concepts
#endif //#ifndef RESUMEF_ENABLE_CONCEPT
#ifndef _WITH_LOCK_FREE_Q_KEEP_REAL_SIZE
/* #undef _WITH_LOCK_FREE_Q_KEEP_REAL_SIZE */
#endif //_WITH_LOCK_FREE_Q_KEEP_REAL_SIZE
/* #undef RESUMEF_USE_CUSTOM_SPINLOCK */

+ 5
- 7
tutorial/test_async_modern_cb.cpp View File

@@ -45,7 +45,7 @@ auto tostring_async(_Input_t&& value, _Callable_t&& token)
callback(std::to_string(value));
}).detach();

MODERN_CALLBACK_RETURN();
MODERN_CALLBACK_RETURN();
}

//演示异步库有多个异步回调函数,只要按照Modern Callback范式去做回调,就不再需要写额外的代码,就可以适配到future+librf,以及更多的其他库
@@ -61,7 +61,7 @@ auto add_async(_Ty1&& val1, _Ty2&& val2, _Callable_t&& token)
callback(val1 + val2);
}).detach();

MODERN_CALLBACK_RETURN();
MODERN_CALLBACK_RETURN();
}

//演示异步库有多个异步回调函数,只要按照Modern Callback范式去做回调,就不再需要写额外的代码,就可以适配到future+librf,以及更多的其他库
@@ -83,7 +83,7 @@ auto muldiv_async(_Ty1&& val1, _Ty2&& val2, _Callable_t&& token)
callback(nullptr, v1, val1 / val2);
}).detach();

MODERN_CALLBACK_RETURN();
MODERN_CALLBACK_RETURN();
}

#include "use_future.h"
@@ -132,11 +132,9 @@ static void example_librf()

//muldiv_async函数可能会抛异常,取决于val是否是0
//异常将会带回到本协程里的代码,所以需要try-catch
auto ab = co_await muldiv_async(9, val, use_librf);
//C++17:
//auto [a, b] = co_await muldiv_async(9, val, use_librf);
auto [a, b] = co_await muldiv_async(9, val, use_librf);

std::string result = co_await tostring_async(std::get<0>(ab) + std::get<1>(ab), use_librf);
std::string result = co_await tostring_async(a + b, use_librf);

std::cout << result << std::endl;
}

Loading…
Cancel
Save