基于C++ Coroutines提案 ‘Stackless Resumable Functions’编写的协程库
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "librf.h"
  2. #include <experimental/resumable>
  3. #include <experimental/generator>
  4. #include <optional>
  5. extern void resumable_main_yield_return();
  6. extern void resumable_main_timer();
  7. extern void resumable_main_suspend_always();
  8. extern void resumable_main_sleep();
  9. extern void resumable_main_routine();
  10. extern void resumable_main_resumable();
  11. extern void resumable_main_mutex();
  12. extern void resumable_main_exception();
  13. extern void resumable_main_event();
  14. extern void resumable_main_event_timeout();
  15. extern void resumable_main_dynamic_go();
  16. extern void resumable_main_channel();
  17. extern void resumable_main_cb();
  18. extern void resumable_main_modern_cb();
  19. extern void resumable_main_multi_thread();
  20. extern void resumable_main_channel_mult_thread();
  21. extern void resumable_main_when_all();
  22. extern void resumable_main_layout();
  23. extern void resumable_main_switch_scheduler();
  24. extern void resumable_main_benchmark_mem();
  25. extern void benchmark_main_channel_passing_next();
  26. extern void resumable_main_benchmark_asio_server();
  27. extern void resumable_main_benchmark_asio_client(intptr_t nNum);
  28. int main(int argc, const char* argv[])
  29. {
  30. (void)argc;
  31. (void)argv;
  32. resumable_main_layout();
  33. //if (argc > 1)
  34. // resumable_main_benchmark_asio_client(atoi(argv[1]));
  35. //else
  36. // resumable_main_benchmark_asio_server();
  37. //resumable_main_cb();
  38. //resumable_main_layout();
  39. //resumable_main_modern_cb();
  40. //resumable_main_suspend_always();
  41. //resumable_main_yield_return();
  42. //resumable_main_resumable();
  43. //resumable_main_routine();
  44. //resumable_main_exception();
  45. //resumable_main_dynamic_go();
  46. //resumable_main_multi_thread();
  47. //resumable_main_timer();
  48. //resumable_main_benchmark_mem();
  49. //resumable_main_mutex();
  50. //resumable_main_event();
  51. //resumable_main_event_timeout();
  52. //resumable_main_channel();
  53. //resumable_main_channel_mult_thread();
  54. //resumable_main_sleep();
  55. //resumable_main_when_all();
  56. //resumable_main_switch_scheduler();
  57. //benchmark_main_channel_passing_next();
  58. return 0;
  59. }