@@ -54,6 +54,7 @@ option(OPT_DEBUG_COUNTER "Debug objects count" OFF) | |||
option(OPT_KEEP_REAL_SIZE "Keep real size in queue" OFF) | |||
option(OPT_DISABLE_MULT_THREAD "Disable multi-threaded scheduler" OFF) | |||
option(OPT_USE_MIMALLOC "Use mimalloc" OFF) | |||
option(OPT_DYNAMIC_LIBRARY "Use shared library" OFF) | |||
if (UNIX) | |||
if(OPT_USE_MIMALLOC) | |||
@@ -91,6 +92,10 @@ endif() | |||
if(OPT_DISABLE_MULT_THREAD) | |||
set(RESUMEF_DISABLE_MULT_THREAD 1) | |||
endif() | |||
if(OPT_DYNAMIC_LIBRARY) | |||
set(RESUMEF_USE_SHARD_LIBRARY 1) | |||
add_compile_definitions("-DRESUMEF_DYNAMIC_EXPORTS=1") | |||
endif() | |||
configure_file( | |||
${PROJECT_SOURCE_DIR}/config.h.in | |||
@@ -119,8 +124,11 @@ ${PROJECT_SOURCE_DIR}/librf/src/when_v2.cpp | |||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) | |||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) | |||
#add_library(librf SHARED ${SRC}) | |||
add_library(librf STATIC ${SRC}) | |||
if(OPT_DYNAMIC_LIBRARY) | |||
add_library(librf SHARED ${SRC}) | |||
else() | |||
add_library(librf STATIC ${SRC}) | |||
endif() | |||
include_directories( |
@@ -1,7 +1,7 @@ | |||
# librf 2.9.10 | |||
### librf - 协程库 | |||
* librf是一个基于C++ Coroutines提案 ‘Stackless Resumable Functions’编写的非对称stackless协程库。 | |||
* librf是一个基于C++20 coroutines编写的无栈协程库。 | |||
支持以下平台和编译器: | |||
@@ -4,7 +4,7 @@ | |||
#if defined(__clang__) || defined(_MSC_VER) | |||
#cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@ | |||
#else | |||
#cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@ | |||
#cmakedefine RESUMEF_INLINE_STATE 0 | |||
#endif //defined(__clang__) || defined(_MSC_VER) | |||
#endif //RESUMEF_INLINE_STATE | |||
@@ -21,3 +21,5 @@ | |||
#endif //RESUMEF_DISABLE_MULT_THREAD | |||
#cmakedefine RESUMEF_USE_CUSTOM_SPINLOCK @RESUMEF_USE_CUSTOM_SPINLOCK@ | |||
#cmakedefine RESUMEF_USE_SHARD_LIBRARY @RESUMEF_USE_SHARD_LIBRARY@ |
@@ -2,9 +2,9 @@ | |||
#ifndef RESUMEF_INLINE_STATE | |||
#if defined(__clang__) || defined(_MSC_VER) | |||
/* #undef RESUMEF_INLINE_STATE */ | |||
#define RESUMEF_INLINE_STATE 1 | |||
#else | |||
/* #undef RESUMEF_INLINE_STATE */ | |||
#define RESUMEF_INLINE_STATE 0 | |||
#endif //defined(__clang__) || defined(_MSC_VER) | |||
#endif //RESUMEF_INLINE_STATE | |||
@@ -21,3 +21,5 @@ | |||
#endif //RESUMEF_DISABLE_MULT_THREAD | |||
/* #undef RESUMEF_USE_CUSTOM_SPINLOCK */ | |||
/* #undef RESUMEF_USE_SHARD_LIBRARY */ |
@@ -31,3 +31,17 @@ | |||
#define unlikely(x) x | |||
#endif // unlikely | |||
#endif // defined(__clang__) || defined(__GNUC__) | |||
#ifdef RESUMEF_USE_SHARD_LIBRARY | |||
# if _WIN32 | |||
# ifdef RESUMEF_DYNAMIC_EXPORTS | |||
# define LIBRF_API __declspec(dllexport) | |||
# else //RESUMEF_DYNAMIC_EXPORTS | |||
# define LIBRF_API __declspec(dllimport) | |||
# endif //RESUMEF_DYNAMIC_EXPORTS | |||
# else //_WIN32 | |||
# define LIBRF_API __attribute__((visibility("default"))) | |||
# endif //_WIN32 | |||
#else //RESUMEF_USE_SHARD_LIBRARY | |||
# define LIBRF_API | |||
#endif //RESUMEF_USE_SHARD_LIBRARY |
@@ -104,11 +104,9 @@ namespace resumef | |||
} | |||
/* | |||
using _Alloc_char = std::allocator<char>; | |||
void* operator new(size_t _Size); | |||
void operator delete(void* _Ptr, size_t _Size); | |||
*/ | |||
#if !RESUMEF_INLINE_STATE | |||
private: | |||
counted_ptr<state_type> _state = state_future_t::_Alloc_state<state_type>(false); |
@@ -48,7 +48,6 @@ namespace resumef | |||
return get_state(); | |||
} | |||
/* | |||
template <typename _Ty> | |||
void* promise_impl_t<_Ty>::operator new(size_t _Size) | |||
{ | |||
@@ -102,6 +101,5 @@ namespace resumef | |||
return _Al.deallocate(reinterpret_cast<char*>(_Ptr), _Size); | |||
#endif | |||
} | |||
*/ | |||
} | |||