From 73399e7a3bc0c58cd6ea383d694e91c2626d566a Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Fri, 24 Jan 2020 10:39:51 +0100 Subject: [PATCH 01/32] Very good FIFO implementation. Many thanks. Please review the minor changes. --- .gitignore | 334 +++++++++++++++++++++++++- example_wins.c | 107 ++++++--- lfqueue.c | 43 +++- lfqueue.h | 92 +++++-- lfqueue_vs201x/.gitignore | 333 +++++++++++++++++++++++++ lfqueue_vs201x/lfqueue_vs201x.vcxproj | 10 +- 6 files changed, 851 insertions(+), 68 deletions(-) create mode 100644 lfqueue_vs201x/.gitignore diff --git a/.gitignore b/.gitignore index 0a4a118..a954a0c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,334 @@ -*.out +out/ + + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ \ No newline at end of file diff --git a/example_wins.c b/example_wins.c index 8f63ed1..731ff30 100644 --- a/example_wins.c +++ b/example_wins.c @@ -1,19 +1,40 @@ + + #include #include #include #include #include +#include #include "lfqueue.h" + +#ifndef LFQ_WINDOWS +#error This is Windows only code +#endif + +#define VC_EXTRALEAN +#define WIN32_LEAN_AND_MEAN #include -#include +#include /* _beginthread, _endthread */ + +/*----------------------------------------------------------------------------------------------*/ +/* + * Structure used in select() call, taken from the BSD file sys/time.h. + */ +struct timeval { + long tv_sec; /* seconds */ + long tv_usec; /* and microseconds */ +}; struct timeval tv1, tv2; -lfqueue_t myq; -#define nthreads 8 -#define total_put 50000 +lfqueue_t the_queue; +#define MAX_THREADS 8 +#define total_put 50000 +/*----------------------------------------------------------------------------------------------*/ unsigned __stdcall worker(void *); +/*----------------------------------------------------------------------------------------------*/ unsigned __stdcall worker(void *arg) { int i = 0; @@ -24,12 +45,12 @@ unsigned __stdcall worker(void *arg) *int_data = i++; /*Enqueue*/ - while (lfqueue_enq(&myq, int_data)) { + while (lfqueue_enq(&the_queue, int_data)) { printf("ENQ FULL?\n"); } /*Dequeue*/ - while ((int_data = lfqueue_deq(&myq)) == NULL) { + while ((int_data = lfqueue_deq(&the_queue)) == NULL) { // usleep(1000); printf("DEQ EMPTY?\n"); } @@ -38,51 +59,75 @@ unsigned __stdcall worker(void *arg) return 0; } -#define join_threads \ -for (i = 0; i < nthreads; i++)\ +/*----------------------------------------------------------------------------------------------*/ +#define JOIN_ALL_THREADS \ +for (i = 0; i < MAX_THREADS; i++)\ WaitForSingleObject(threads[i], INFINITE) + +/*----------------------------------------------------------------------------------------------*/ /* #define detach_thread_and_loop \ -for (i = 0; i < nthreads; i++)\ +for (i = 0; i < MAX_THREADS; i++)\ pthread_detach(threads[i]);\ while (1) {\ sleep(2);\ -printf("current size= %zu\n", lfqueue_size(&myq) );\ +printf("current size= %zu\n", lfqueue_size(&the_queue) );\ }*/ - -int main(void) +/*----------------------------------------------------------------------------------------------*/ +int main(int argc, char ** argv) { - //const static int nthreads = 2;//sysconf(_SC_NPROCESSORS_ONLN); // Linux + //const static int MAX_THREADS = 2;//sysconf(_SC_NPROCESSORS_ONLN); // Linux + + static const int LOOP_SIZE_ = 100; int i, n; - if (lfqueue_init(&myq) == -1) - return -1; - for (n = 0; n < 100; n++) { - /* Spawn threads. */ - printf("Current running at %d, Total threads = %d\n", n, nthreads); - clock_t start = clock(); - HANDLE threads[nthreads]; + if (lfqueue_init(&the_queue) == -1) { + perror("LF QUEUE initialization has failed."); + return EXIT_FAILURE ; + } - for (i = 0; i < nthreads; i++) { - unsigned udpthreadid; + printf("\n\n"); + clock_t total_start = clock(); + + for (n = 0; n < LOOP_SIZE_; n++) { + + /* Spawn the threads. */ + HANDLE threads[MAX_THREADS] = {0}; + + clock_t start = clock(); + /* inside each loop begin workers on separate threads */ + for (i = 0; i < MAX_THREADS; i++) + { + unsigned udpthreadid = 0; threads[i] = (HANDLE)_beginthreadex(NULL, 0, worker, NULL, 0, &udpthreadid); } - join_threads; + JOIN_ALL_THREADS; // detach_thread_and_loop; - clock_t end = clock(); + printf("\rFinished loop [%3d] of [%3d], Total time to begin and join [%3d] threads was: [%3.3f] seconds ", + n, LOOP_SIZE_, MAX_THREADS, ((float)(clock() - start) / CLOCKS_PER_SEC)); - printf("Total time = %f seconds\n", (float)(end - start) / CLOCKS_PER_SEC); + if (0 != lfqueue_size(&the_queue)) + { + perror("Error, all queues should be consumed but they are not"); + return EXIT_FAILURE; + } - assert(0 == lfqueue_size(&myq) && "Error, all queue should be consumed but not"); + } /* main loop */ - } + lfqueue_destroy(&the_queue); - lfqueue_destroy(&myq); - printf("Test Pass!\n"); - //getchar(); - return 0; + printf("\n\n"); + printf("Total test time: %3.3f minutes", ((float)(clock() - total_start) / CLOCKS_PER_SEC) / 60.0 ); + printf("\n\n"); + + system("@echo."); + system("@echo --- Test has passed --- "); + system("@echo."); + system("@pause."); + + return EXIT_SUCCESS; } diff --git a/lfqueue.c b/lfqueue.c index fb0686c..79bd5d9 100644 --- a/lfqueue.c +++ b/lfqueue.c @@ -43,7 +43,7 @@ #define __LFQ_YIELD_THREAD sched_yield #define __LFQ_SYNC_MEMORY __sync_synchronize -#else +#else /* NOT defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ */ #include #include @@ -59,7 +59,8 @@ inline BOOL __SYNC_BOOL_CAS(LONG64 volatile *dest, LONG64 input, LONG64 comparan #define __LFQ_ADD_AND_FETCH InterlockedAddNoFence64 #define __LFQ_SYNC_MEMORY MemoryBarrier -#else +#else /* NOT _WIN64*/ + #ifndef asm #define asm __asm #endif @@ -74,14 +75,18 @@ inline BOOL __SYNC_BOOL_CAS(LONG volatile *dest, LONG input, LONG comparand) { #define __LFQ_ADD_AND_FETCH InterlockedAddNoFence #define __LFQ_SYNC_MEMORY() asm mfence -#endif +#endif /* NOT _WIN64 */ + #include #define __LFQ_YIELD_THREAD SwitchToThread -#endif + +#endif /* defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ */ #include "lfqueue.h" #define DEF_LFQ_ASSIGNED_SPIN 2048 +/*----------------------------------------------------------------------------------------------*/ + #if defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ #define lfq_time_t long #define lfq_get_curr_time(_time_sec) \ @@ -95,20 +100,46 @@ gettimeofday(&_time_, NULL); \ #define lfq_diff_time(_etime_, _stime_) difftime(_etime_, _stime_) #endif +/*----------------------------------------------------------------------------------------------*/ + struct lfqueue_cas_node_s { void * value; struct lfqueue_cas_node_s *next, *nextfree; lfq_time_t _deactivate_tm; }; +/*----------------------------------------------------------------------------------------------*/ + //static lfqueue_cas_node_t* __lfq_assigned(lfqueue_t *); static void __lfq_recycle_free(lfqueue_t *, lfqueue_cas_node_t*); static void __lfq_check_free(lfqueue_t *); static void *_dequeue(lfqueue_t *); static void *_single_dequeue(lfqueue_t *); static int _enqueue(lfqueue_t *, void* ); -static inline void* _lfqueue_malloc(void* pl, size_t sz) { - return malloc(sz); +/*----------------------------------------------------------------------------------------------*/ + +static const size_t LFQ_MAX_SINGLE_ALLOCATION = 0xFFFF; + +static inline void* _lfqueue_malloc(void* pl, size_t sz) +{ + /*return malloc(sz);*/ +#ifdef NDEBUG + return calloc(1,sz); +#else + if (sz >= LFQ_MAX_SINGLE_ALLOCATION) + { + errno = ENOMEM; + perror( __FILE__ " -- LFQ max single heap allocation can not be larger than 64KB "); + exit( EXIT_FAILURE ); + } + void * p = calloc(1, sz); + if (! p ) + { + perror(__FILE__ " -- LFQ heap allocation failed "); + exit(EXIT_FAILURE); + } + return p; +#endif /* NDEBUG */ } static inline void _lfqueue_free(void* pl, void* ptr) { free(ptr); diff --git a/lfqueue.h b/lfqueue.h index 1eafc7b..bdf98a8 100644 --- a/lfqueue.h +++ b/lfqueue.h @@ -31,16 +31,55 @@ #ifndef LFQUEUE_H #define LFQUEUE_H +/*----------------------------------------------------------------------------------------------*/ + +#if defined(_WIN32) || defined(__CYGWIN__) +// Windows (x86 or x64) +#define LFQ_WINDOWS +// ... +#elif defined(__linux__) +// Linux +#define LFQ_LINUX +// ... +#elif defined(__APPLE__) && defined(__MACH__) +// Mac OS +#define LFQ_MACOS +// ... +#elif defined(unix) || defined(__unix__) || defined(__unix) +// Unix like OS +#define LFQ_UNIX +// ... +#else +#error Unknown runtime +#endif + +#ifdef NDEBUG +#define LFQ_BUILD "RELEASE" +#define LFQ_RELEASE +#else +#define LFQ_BUILD "DEBUG" +#undef LFQ_RELEASE +#endif + +/*----------------------------------------------------------------------------------------------*/ + #include #include +#define LFQ_NAMESPACE lf_queue + #ifdef __cplusplus -extern "C" { +namespace LFQ_NAMESPACE { + extern "C" { #endif -typedef struct lfqueue_cas_node_s lfqueue_cas_node_t; -typedef void* (*lfqueue_malloc_fn)(void*, size_t); -typedef void (*lfqueue_free_fn)(void*, void*); + /*----------------------------------------------------------------------------------------------*/ + typedef enum {major = 1, minor = 3, patch = 0 } VERSION ; + /*----------------------------------------------------------------------------------------------*/ + + typedef struct lfqueue_cas_node_s lfqueue_cas_node_t; + typedef void* (*lfqueue_malloc_fn)(void*, size_t); + typedef void (*lfqueue_free_fn)(void*, void*); #if defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ #define lfq_bool_t int @@ -52,33 +91,36 @@ typedef void (*lfqueue_free_fn)(void*, void*); #endif #endif -typedef struct { - lfqueue_cas_node_t *head, *tail, *root_free, *move_free; - volatile size_t size; - volatile lfq_bool_t in_free_mode; - lfqueue_malloc_fn _malloc; - lfqueue_free_fn _free; - void *pl; -} lfqueue_t; + typedef struct { + lfqueue_cas_node_t* head, * tail, * root_free, * move_free; + volatile size_t size; + volatile lfq_bool_t in_free_mode; + lfqueue_malloc_fn _malloc; + lfqueue_free_fn _free; + void* pl; + } lfqueue_t; + + /*----------------------------------------------------------------------------------------------*/ -extern int lfqueue_init(lfqueue_t *lfqueue); -extern int lfqueue_init_mf(lfqueue_t *lfqueue, void* pl, lfqueue_malloc_fn lfqueue_malloc, lfqueue_free_fn lfqueue_free); -extern int lfqueue_enq(lfqueue_t *lfqueue, void *value); -extern void* lfqueue_deq(lfqueue_t *lfqueue); -extern void* lfqueue_single_deq(lfqueue_t *lfqueue); + extern int lfqueue_init(lfqueue_t* lfqueue); + extern int lfqueue_init_mf(lfqueue_t* lfqueue, void* pl, lfqueue_malloc_fn lfqueue_malloc, lfqueue_free_fn lfqueue_free); + extern int lfqueue_enq(lfqueue_t* lfqueue, void* value); + extern void* lfqueue_deq(lfqueue_t* lfqueue); + extern void* lfqueue_single_deq(lfqueue_t* lfqueue); -/** loop until value been dequeue, it sleeps 1ms if not found to reduce cpu high usage **/ -extern void* lfqueue_deq_must(lfqueue_t *lfqueue); -extern void* lfqueue_single_deq_must(lfqueue_t *lfqueue); + /** loop until value been dequeue, it sleeps 1ms if not found to reduce cpu high usage **/ + extern void* lfqueue_deq_must(lfqueue_t* lfqueue); + extern void* lfqueue_single_deq_must(lfqueue_t* lfqueue); -extern void lfqueue_destroy(lfqueue_t *lfqueue); -extern size_t lfqueue_size(lfqueue_t *lfqueue); -extern void lfqueue_sleep(unsigned int milisec); + extern void lfqueue_destroy(lfqueue_t* lfqueue); + extern size_t lfqueue_size(lfqueue_t* lfqueue); + extern void lfqueue_sleep(unsigned int milisec); #ifdef __cplusplus -} + } +} // namespace LFQ_NAMESPACE #endif -#endif +#endif /* LFQUEUE_H */ diff --git a/lfqueue_vs201x/.gitignore b/lfqueue_vs201x/.gitignore new file mode 100644 index 0000000..197f216 --- /dev/null +++ b/lfqueue_vs201x/.gitignore @@ -0,0 +1,333 @@ + +.out/ + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ \ No newline at end of file diff --git a/lfqueue_vs201x/lfqueue_vs201x.vcxproj b/lfqueue_vs201x/lfqueue_vs201x.vcxproj index 462dc6f..dea1950 100644 --- a/lfqueue_vs201x/lfqueue_vs201x.vcxproj +++ b/lfqueue_vs201x/lfqueue_vs201x.vcxproj @@ -22,32 +22,32 @@ 15.0 {791DBD15-5878-4EEB-A9D3-FA94C82E03B7} lfqueuevs201x - 8.1 + 10.0 Application true - v140 + v142 MultiByte Application false - v140 + v142 true MultiByte Application true - v140 + v142 MultiByte Application false - v140 + v142 true MultiByte From 7bd5689aa0a333cd6a91bd878b47829b6801f204 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Fri, 24 Jan 2020 10:51:06 +0100 Subject: [PATCH 02/32] only one windows.h include --- lfqueue.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lfqueue.c b/lfqueue.c index 79bd5d9..1a1658f 100644 --- a/lfqueue.c +++ b/lfqueue.c @@ -45,7 +45,11 @@ #else /* NOT defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ */ +#define VC_EXTRALEAN +#define WIN32_LEAN_AND_MEAN +#define NOMINMAX #include + #include #ifdef _WIN64 inline BOOL __SYNC_BOOL_CAS(LONG64 volatile *dest, LONG64 input, LONG64 comparand) { @@ -77,7 +81,7 @@ inline BOOL __SYNC_BOOL_CAS(LONG volatile *dest, LONG input, LONG comparand) { #endif /* NOT _WIN64 */ -#include +// #include #define __LFQ_YIELD_THREAD SwitchToThread #endif /* defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ */ From e3d8282ab0b70163293e7abc1db1570b1ac677f6 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Fri, 24 Jan 2020 11:10:02 +0100 Subject: [PATCH 03/32] removed ifdef c++ --- lfqueue.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lfqueue.c b/lfqueue.c index 1a1658f..e9595e9 100644 --- a/lfqueue.c +++ b/lfqueue.c @@ -409,6 +409,4 @@ lfqueue_sleep(unsigned int milisec) { #endif } -#ifdef __cplusplus -} -#endif +/* EOF */ \ No newline at end of file From cfde2eb9f9ebaa5f5ca644bc2092174c9b80a504 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Fri, 24 Jan 2020 16:26:06 +0100 Subject: [PATCH 04/32] cpp test started -- not compiled yet --- lfqueue.h | 2 +- lfqueue_vs201x/cpp/test.cpp | 360 +++++++++++++++++++ lfqueue_vs201x/cpp/test.h | 174 +++++++++ lfqueue_vs201x/cpp/test/test.sln | 31 ++ lfqueue_vs201x/cpp/test/test.vcxproj | 162 +++++++++ lfqueue_vs201x/cpp/test/test.vcxproj.filters | 27 ++ 6 files changed, 755 insertions(+), 1 deletion(-) create mode 100644 lfqueue_vs201x/cpp/test.cpp create mode 100644 lfqueue_vs201x/cpp/test.h create mode 100644 lfqueue_vs201x/cpp/test/test.sln create mode 100644 lfqueue_vs201x/cpp/test/test.vcxproj create mode 100644 lfqueue_vs201x/cpp/test/test.vcxproj.filters diff --git a/lfqueue.h b/lfqueue.h index bdf98a8..9621549 100644 --- a/lfqueue.h +++ b/lfqueue.h @@ -118,7 +118,7 @@ namespace LFQ_NAMESPACE { #ifdef __cplusplus - } + } // extern "C" } // namespace LFQ_NAMESPACE #endif diff --git a/lfqueue_vs201x/cpp/test.cpp b/lfqueue_vs201x/cpp/test.cpp new file mode 100644 index 0000000..ae710be --- /dev/null +++ b/lfqueue_vs201x/cpp/test.cpp @@ -0,0 +1,360 @@ + +#include "test.h" + +namespace lf_queue { + + namespace test { + + //----------------------------------------------------------------------------------------------- +// struct timeval tv1, tv2; +#define total_put 50000 +#define total_running_loop 50 + constexpr int nthreads = 4; + int one_thread = 1; + int nthreads_exited = 0; + + /// ------------------------------------------------------------------------------------------ + struct lfq_deletor_type { + void operator ()(lf_queue::lfqueue_t* lfqueue) { + lfqueue_destroy(lfqueue); + delete lfqueue; + lfqueue = nullptr; + } + }; + + using lfq_queue_ptr = std::unique_ptr; + // global for this file + static lfq_queue_ptr lfq_ptr_{ new lfqueue_t }; + + using threads_arr_type = std::array< std::thread, nthreads >; + + using message_type = const char*; + //----------------------------------------------------------------------------------------------- + + // pass the reference to the array of std::thread's + typedef void (*test_function)(threads_arr_type&); + + void one_enq_and_multi_deq(threads_arr_type&); + void one_deq_and_multi_enq(threads_arr_type&); + void multi_enq_deq(std::thread* threads); + void* worker_sc(void*); + void* worker_s(void*); + void* worker_c(void*); + void* worker_single_c(void*); + + /**Testing must**/ + void one_enq_and_multi_deq_must(threads_arr_type&); + void one_deq_must_and_multi_enq(threads_arr_type&); + void multi_enq_deq_must(std::thread* threads); + void* worker_sc_must(void*); + void* worker_s_must(void*); + void* worker_c_must(void*); + void* worker_single_c_must(void*); + + void running_test(test_function testfn); + + + /// --------------------------------------------------------------------------------------------- + + void* worker_c_must(void* arg) { + int multiplier_{ 1 }; + if (arg) { + multiplier_ = int(*((int*)arg)); + } + int total_loop = total_put * multiplier_; + while ( --total_loop) { + /*Dequeue*/ + message_type data_ = (message_type)lfqueue_deq_must(lfq_ptr_.get()); + + if ( data_ ) printf("\n%s", data_); + } + return 0; + } + + /// --------------------------------------------------------------------------------------------- + void* worker_single_c_must(void* arg) + { + int multiplier_{ 1 }; + if (arg) { + multiplier_ = int(*((int*)arg)); + } + int total_loop = total_put * multiplier_; + while (--total_loop) { + /*Dequeue*/ + auto payload = (message_type)lfqueue_single_deq_must(lfq_ptr_.get()); + if (payload) printf("\n%s", payload); + } + return 0; + } + /// --------------------------------------------------------------------------------------------- + void* worker_sc_must(void* arg) + { + int multiplier_{ 1 }; + if (arg) { + multiplier_ = int(*((int*)arg)); + } + int total_loop = total_put * multiplier_; + message_type payload = __FUNCSIG__; + + while ( --total_loop) { + /*Enqueue*/ + while (lfqueue_enq(lfq_ptr_.get(), (void*)payload)) { + printf("ENQ FULL?\n"); + } + /*Dequeue*/ + message_type payload_received = (message_type)lfqueue_deq_must(lfq_ptr_.get()); + if (payload_received) + printf("\n%s", payload_received); + } + return 0; + } + /// --------------------------------------------------------------------------------------------- + + void* worker_c(void* arg) { + int multiplier_{ 1 }; + if (arg) { + multiplier_ = int(*((int*)arg)); + } + int total_loop = total_put * multiplier_; + while (--total_loop) { + /*Dequeue*/ + message_type data_{}; + while (( data_ = (message_type)lfqueue_deq(lfq_ptr_.get())) == nullptr) { + lfqueue_sleep(1); + } + // printf("%s\n", data_); + } + return 0; + } + + /// --------------------------------------------------------------------------------------------- + void* worker_single_c(void* arg) { + int multiplier_{ 1 }; + if (arg) { + multiplier_ = int(*((int*)arg)); + } + int total_loop = total_put * multiplier_; + while (--total_loop) { + /*Dequeue*/ + message_type data_{}; + while ((data_ = (message_type)lfqueue_single_deq(lfq_ptr_.get())) == nullptr) { + lfqueue_sleep(1); + } + // printf("%s\n", data_); + } + return 0; + } + + /// --------------------------------------------------------------------------------------------- + /** Worker Keep Sending at the same time, do not try instensively **/ + void* worker_s(void* arg) + { + int multiplier_{ 1 }; + + if (arg) { + multiplier_ = int(*((int*)arg)); + } + + static message_type payload = "PAYLOAD"; + int walker_ = 0; + int total_loop = total_put * multiplier_; + while (walker_++ < total_loop) { + + /*Enqueue*/ + while (lfqueue_enq(lfq_ptr_.get(), &payload)) + { + // printf("ENQ FULL?\n"); + } + } + // __sync_add_and_fetch(&nthreads_exited, 1); + return 0; + } + + /** Worker Send And Consume at the same time **/ + void* worker_sc(void* arg) + { + int i = 0; + int* int_data; + while (i < total_put) { + int_data = (int*)malloc(sizeof(int)); + assert(int_data != NULL); + *int_data = i++; + /*Enqueue*/ + while (lfqueue_enq(lfq_ptr_, int_data)) { + printf("ENQ FULL?\n"); + } + + /*Dequeue*/ + while ((int_data = lfqueue_deq(lfq_ptr_)) == NULL) { + lfqueue_sleep(1); + } + // printf("%d\n", *int_data); + free(int_data); + } + __sync_add_and_fetch(&nthreads_exited, 1); + return 0; + } + +#if 0 +#define join_threads \ +for (i = 0; i < nthreads; i++) {\ +pthread_join(threads[i], NULL); \ +} + +#define detach_thread_and_loop \ +for (i = 0; i < nthreads; i++)\ +pthread_detach(threads[i]);\ +while ( nthreads_exited < nthreads ) \ + lfqueue_sleep(10);\ +if(lfqueue_size(lfq_ptr_ ) != 0){\ +lfqueue_sleep(10);\ +} +#endif // 0 + + /// -------------------------------------------------------------------------------------------- + /// functions given to running_test() + /// -------------------------------------------------------------------------------------------- + + void multi_enq_deq(threads_arr_type& threads) { + printf("-----------%s---------------\n", "multi_enq_deq"); + + for (auto& thr_ : threads) { + thr_ = std::thread(worker_sc); + } + + for (auto& thr_ : threads) { + thr_.join(); + } + } + + void one_deq_and_multi_enq(threads_arr_type& threads) { + printf("-----------%s---------------\n", "one_deq_and_multi_enq"); + + for (auto& thr_ : threads) { + thr_ = std::thread(worker_s); + } + + worker_single_c(threads); + + for (auto& thr_ : threads) { + thr_.join(); + } + } + + void one_enq_and_multi_deq(threads_arr_type& threads) { + printf("-----------%s---------------\n", "one_enq_and_multi_deq"); + + for (auto& thr_ : threads) { + thr_ = std::thread(worker_c); + } + + worker_s(threads); + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" + for (auto& thr_ : threads) { + thr_.join(); + } +#pragma GCC diagnostic pop + + } + + + void one_deq_must_and_multi_enq(threads_arr_type& threads) { + printf("-----------%s---------------\n", "one_deq_must_and_multi_enq"); + + for (auto& thr_ : threads) { + thr_ = std::thread(worker_s); + } + + worker_single_c_must(nullptr); + + for (auto& thr_ : threads) { + thr_.join(); + } + } + + void one_enq_and_multi_deq_must(threads_arr_type& threads) { + printf("-----------%s---------------\n", "one_enq_and_multi_deq_must"); + + for (auto& thr_ : threads) { + thr_ = std::thread(worker_c_must); + } + + worker_s(nullptr); + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" + for (auto& thr_ : threads) { + thr_.join(); + } +#pragma GCC diagnostic pop + + } + + void multi_enq_deq_must(threads_arr_type& threads) { + printf("-----------%s---------------\n", "multi_enq_deq_must"); + for (auto& thr_ : threads) { + thr_ = std::thread(worker_sc_must); + } + for (auto& thr_ : threads) { + thr_.join(); + } + } + + /// -------------------------------------------------------------------------------------------- + + void running_test(test_function testfn) { + int n; + + for (n = 0; n < total_running_loop; n++) { + printf("Running loop %d or %d ", n, total_running_loop); + nthreads_exited = 0; + + /* Spawn N threads. */ + threads_arr_type threads_arr_{ {} }; + + printf("Using %d thread%s.\n", nthreads, nthreads == 1 ? "" : "s"); + printf("Total requests %d \n", total_put); + + timer timer_{}; + testfn(threads_arr_); + + printf("Total time: %f seconds\n", as_buffer(timer_, timer::kind::second).data()); + + lfqueue_sleep(10); + assert(0 == lfqueue_size(lfq_ptr_.get()) && "Error, all queue should be consumed but is not"); + } + } + + } // namespace test + +} // lf_queue + +/// ------------------------------------------------------------------------------------------ +int main(const int, const char**) +{ + using namespace lf_queue; + using namespace lf_queue::test; + + if (lfqueue_init(lfq_ptr_.get()) == -1) + { + perror(__FILE__ " -- lfqueue_init() has failed "); + return EXIT_FAILURE; + } + + running_test(one_enq_and_multi_deq); + running_test(one_enq_and_multi_deq_must); + + running_test(one_deq_and_multi_enq); + running_test(one_deq_must_and_multi_enq); + + running_test(multi_enq_deq); + running_test(multi_enq_deq_must); + + + printf("All Tests have passed!\n"); + + return EXIT_SUCCESS; +} + diff --git a/lfqueue_vs201x/cpp/test.h b/lfqueue_vs201x/cpp/test.h new file mode 100644 index 0000000..df83c30 --- /dev/null +++ b/lfqueue_vs201x/cpp/test.h @@ -0,0 +1,174 @@ +#pragma once + +/* +------------------------------------------------------------------------------------------------ +CHECK FOR C++ VERSION +------------------------------------------------------------------------------------------------ +Note: these should be intrinsic macros +*/ + +// this is MSVC STD LIB code +// it actually does not depend on C++20 __cplusplus +// which is yet undefined as of 2020 Q1 + +#if !defined(LFQ_HAS_CXX17) && !defined(LFQ_HAS_CXX20) + +#if defined(_MSVC_LANG) +#define LFQ__STL_LANG _MSVC_LANG +#else +#define LFQ__STL_LANG __cplusplus +#endif + +#if LFQ__STL_LANG > 201703L +#define LFQ_HAS_CXX17 1 +#define LFQ_HAS_CXX20 1 +#elif LFQ__STL_LANG > 201402L +#define LFQ_HAS_CXX17 1 +#define LFQ_HAS_CXX20 0 +#else // LFQ__STL_LANG <= 201402L +#define LFQ_HAS_CXX17 0 +#define LFQ_HAS_CXX20 0 +#endif // Use the value of LFQ__STL_LANG to define LFQ_HAS_CXX17 and \ + // LFQ_HAS_CXX20 + +// #undef LFQ__STL_LANG +#endif // !defined(LFQ_HAS_CXX17) && !defined(LFQ_HAS_CXX20) + +#ifndef LFQ_HAS_CXX17 +#error C++17 is required +#endif // LFQ_HAS_CXX17 + + /* + We include climits so that non intrinsic macros are avaiable too. + For C++20 that should be the role of the header + http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0754r2.pdf + +*/ +/* +LINUX headers +#include +#include +#include +*/ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +// C API is in lf_queue namespace when consumed from C++ +#include "../../lfqueue.h" + +namespace lf_queue::test { + +/* +Usage: + +stopwatch::precise stopwatch{}; + +Note: all timings are integer types, no decimals + +auto nanos_ = stopwatch.elapsed(); +auto millis_ = stopwatch.elapsed(); +auto micros_ = stopwatch.elapsed(); +auto secos_ = stopwatch.elapsed(); +*/ +// https://wandbox.org/permlink/BHVUDSoZn1Cm8yzo + namespace stopwatch + { + template + class engine + { + const typename CLOCK::time_point start_point{}; + + public: + engine() : start_point(CLOCK::now()) + { + } + + template < + typename REP = typename CLOCK::duration::rep, + typename UNITS = typename CLOCK::duration> + REP elapsed() const + { + std::atomic_thread_fence(std::memory_order_relaxed); + auto elapsed_ = + std::chrono::duration_cast(CLOCK::now() - start_point).count(); + std::atomic_thread_fence(std::memory_order_relaxed); + return static_cast(elapsed_); + } + }; + + using precise = engine<>; + using system = engine; + using monotonic = engine; + } // namespace stopwatch + + /// times as decimals + struct timer final + { + using buffer = std::array; + using CLOCK = typename std::chrono::high_resolution_clock; + using timepoint = typename CLOCK::time_point; + const timepoint start_ = CLOCK::now(); + + double nano() const + { + std::atomic_thread_fence(std::memory_order_relaxed); + double rez_ = static_cast((CLOCK::now() - start_).count()); + std::atomic_thread_fence(std::memory_order_relaxed); + return rez_; + } + + double micro() const { return nano() / 1000.0; } + double milli() const { return micro() / 1000.0; } + double seconds() const { return milli() / 1000.0; } + // double decimal3(double arg) { return (std::round(arg * 1000)) / 1000; } + + enum class kind + { + nano, + micro, + milli, + second + }; + + + /// timer timer_{} ; + /// auto microsecs_ = as_buffer( timer_ ); + /// auto secs_ = as_buffer( timer_, timer::kind::second ); + + friend buffer as_buffer(timer const& timer_, kind which_ = kind::milli) + { + buffer retval{ char{0} }; + double arg{}; + char const* unit_{}; + switch (which_) + { + case kind::nano: + arg = timer_.nano(); + unit_ = " nano seconds "; + break; + case kind::micro: + arg = timer_.micro(); + unit_ = " micro seconds "; + break; + case kind::milli: + arg = timer_.milli(); + unit_ = " milli seconds "; + break; + default: //seconds + arg = timer_.seconds(); + unit_ = " seconds "; + } + std::snprintf(retval.data(), retval.size(), "%.3f%s", arg, unit_); + return retval; + } + }; // timer + +} // lf_queue::test \ No newline at end of file diff --git a/lfqueue_vs201x/cpp/test/test.sln b/lfqueue_vs201x/cpp/test/test.sln new file mode 100644 index 0000000..d5d71da --- /dev/null +++ b/lfqueue_vs201x/cpp/test/test.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29709.97 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcxproj", "{AA548A31-DC2F-486C-B464-0DC14B6C5165}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Debug|x64.ActiveCfg = Debug|x64 + {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Debug|x64.Build.0 = Debug|x64 + {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Debug|x86.ActiveCfg = Debug|Win32 + {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Debug|x86.Build.0 = Debug|Win32 + {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Release|x64.ActiveCfg = Release|x64 + {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Release|x64.Build.0 = Release|x64 + {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Release|x86.ActiveCfg = Release|Win32 + {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0197EAAE-346C-4386-8F6E-237A30ACFE92} + EndGlobalSection +EndGlobal diff --git a/lfqueue_vs201x/cpp/test/test.vcxproj b/lfqueue_vs201x/cpp/test/test.vcxproj new file mode 100644 index 0000000..90fd83d --- /dev/null +++ b/lfqueue_vs201x/cpp/test/test.vcxproj @@ -0,0 +1,162 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + 16.0 + {AA548A31-DC2F-486C-B464-0DC14B6C5165} + Win32Proj + test + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + + + Console + true + + + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + + + Console + true + + + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + + + Console + true + true + true + + + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + + + Console + true + true + true + + + + + + \ No newline at end of file diff --git a/lfqueue_vs201x/cpp/test/test.vcxproj.filters b/lfqueue_vs201x/cpp/test/test.vcxproj.filters new file mode 100644 index 0000000..2a7a05d --- /dev/null +++ b/lfqueue_vs201x/cpp/test/test.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + \ No newline at end of file From 8f403d1693b821f8b03f561a0708d0a8edc46b01 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Fri, 24 Jan 2020 18:17:17 +0100 Subject: [PATCH 05/32] tuning the test --- lfqueue_vs201x/cpp/test.cpp | 149 ++++++++----------- lfqueue_vs201x/cpp/test/test.vcxproj | 2 + lfqueue_vs201x/cpp/test/test.vcxproj.filters | 6 + 3 files changed, 66 insertions(+), 91 deletions(-) diff --git a/lfqueue_vs201x/cpp/test.cpp b/lfqueue_vs201x/cpp/test.cpp index ae710be..fa541ba 100644 --- a/lfqueue_vs201x/cpp/test.cpp +++ b/lfqueue_vs201x/cpp/test.cpp @@ -5,10 +5,9 @@ namespace lf_queue { namespace test { - //----------------------------------------------------------------------------------------------- -// struct timeval tv1, tv2; -#define total_put 50000 -#define total_running_loop 50 + /// ------------------------------------------------------------------------------------------ + constexpr auto total_put = 50000U; + constexpr auto total_running_loop = 50U; constexpr int nthreads = 4; int one_thread = 1; int nthreads_exited = 0; @@ -36,18 +35,20 @@ namespace lf_queue { void one_enq_and_multi_deq(threads_arr_type&); void one_deq_and_multi_enq(threads_arr_type&); - void multi_enq_deq(std::thread* threads); - void* worker_sc(void*); - void* worker_s(void*); - void* worker_c(void*); + void multi_enq_deq(threads_arr_type&); + + void* worker_sender_consumer(void*); + void* worker_sender(void*); + void* worker_consumer(void*); void* worker_single_c(void*); /**Testing must**/ void one_enq_and_multi_deq_must(threads_arr_type&); void one_deq_must_and_multi_enq(threads_arr_type&); - void multi_enq_deq_must(std::thread* threads); + void multi_enq_deq_must(threads_arr_type&); + void* worker_sc_must(void*); - void* worker_s_must(void*); + // void* worker_s_must(void*); void* worker_c_must(void*); void* worker_single_c_must(void*); @@ -105,112 +106,84 @@ namespace lf_queue { message_type payload_received = (message_type)lfqueue_deq_must(lfq_ptr_.get()); if (payload_received) printf("\n%s", payload_received); + + if (payload_received) printf("\n" __FUNCSIG__ " -- received -- %s\n", payload_received); } return 0; } /// --------------------------------------------------------------------------------------------- - void* worker_c(void* arg) { - int multiplier_{ 1 }; - if (arg) { - multiplier_ = int(*((int*)arg)); - } - int total_loop = total_put * multiplier_; + void* worker_consumer(void* arg) { + + int total_loop = total_put ; + printf("\n"); while (--total_loop) { /*Dequeue*/ message_type data_{}; while (( data_ = (message_type)lfqueue_deq(lfq_ptr_.get())) == nullptr) { lfqueue_sleep(1); } - // printf("%s\n", data_); + if(data_) printf( "\r worker_consumer <-- received --| %32s [%6d]", data_, total_loop); } + printf("\n"); return 0; } /// --------------------------------------------------------------------------------------------- void* worker_single_c(void* arg) { - int multiplier_{ 1 }; - if (arg) { - multiplier_ = int(*((int*)arg)); - } - int total_loop = total_put * multiplier_; + int total_loop = total_put ; while (--total_loop) { /*Dequeue*/ message_type data_{}; while ((data_ = (message_type)lfqueue_single_deq(lfq_ptr_.get())) == nullptr) { lfqueue_sleep(1); } - // printf("%s\n", data_); + if (data_) printf("\nworker_single_c-- received -- %s\n", data_); } return 0; } /// --------------------------------------------------------------------------------------------- /** Worker Keep Sending at the same time, do not try instensively **/ - void* worker_s(void* arg) + void* worker_sender(void* arg) { - int multiplier_{ 1 }; + int total_loop = total_put ; - if (arg) { - multiplier_ = int(*((int*)arg)); - } + static message_type payload = " worker_sender message " ; - static message_type payload = "PAYLOAD"; - int walker_ = 0; - int total_loop = total_put * multiplier_; - while (walker_++ < total_loop) { + while (--total_loop) { /*Enqueue*/ while (lfqueue_enq(lfq_ptr_.get(), &payload)) { - // printf("ENQ FULL?\n"); + printf( " worker_sender() -- ENQ FULL?\n"); } + + lfqueue_sleep(1); // sleep one millisecond } - // __sync_add_and_fetch(&nthreads_exited, 1); return 0; } + /// --------------------------------------------------------------------------------------------- /** Worker Send And Consume at the same time **/ - void* worker_sc(void* arg) + void* worker_sender_consumer(void* arg) { - int i = 0; - int* int_data; - while (i < total_put) { - int_data = (int*)malloc(sizeof(int)); - assert(int_data != NULL); - *int_data = i++; + int total_loop = total_put ; + static message_type payload = "worker_sender_consumer message"; + while (--total_loop) { /*Enqueue*/ - while (lfqueue_enq(lfq_ptr_, int_data)) { + while (lfqueue_enq(lfq_ptr_.get(), (void*)payload)) { printf("ENQ FULL?\n"); } - /*Dequeue*/ - while ((int_data = lfqueue_deq(lfq_ptr_)) == NULL) { + while ((payload = (message_type)lfqueue_deq(lfq_ptr_.get())) == nullptr) { lfqueue_sleep(1); } - // printf("%d\n", *int_data); - free(int_data); + if (payload) printf("\rworker_sender_consumer -- received -- %30s [%6d]", payload, total_loop); } - __sync_add_and_fetch(&nthreads_exited, 1); return 0; } -#if 0 -#define join_threads \ -for (i = 0; i < nthreads; i++) {\ -pthread_join(threads[i], NULL); \ -} - -#define detach_thread_and_loop \ -for (i = 0; i < nthreads; i++)\ -pthread_detach(threads[i]);\ -while ( nthreads_exited < nthreads ) \ - lfqueue_sleep(10);\ -if(lfqueue_size(lfq_ptr_ ) != 0){\ -lfqueue_sleep(10);\ -} -#endif // 0 - /// -------------------------------------------------------------------------------------------- /// functions given to running_test() /// -------------------------------------------------------------------------------------------- @@ -219,7 +192,7 @@ lfqueue_sleep(10);\ printf("-----------%s---------------\n", "multi_enq_deq"); for (auto& thr_ : threads) { - thr_ = std::thread(worker_sc); + thr_ = std::thread(worker_sender_consumer, nullptr); } for (auto& thr_ : threads) { @@ -231,32 +204,33 @@ lfqueue_sleep(10);\ printf("-----------%s---------------\n", "one_deq_and_multi_enq"); for (auto& thr_ : threads) { - thr_ = std::thread(worker_s); + thr_ = std::thread(worker_sender,nullptr); } - worker_single_c(threads); + worker_single_c(nullptr); for (auto& thr_ : threads) { thr_.join(); } } - + ///------------------------------------------------------------------------------------------- void one_enq_and_multi_deq(threads_arr_type& threads) { printf("-----------%s---------------\n", "one_enq_and_multi_deq"); for (auto& thr_ : threads) { - thr_ = std::thread(worker_c); + thr_ = std::thread(worker_consumer,nullptr); } - worker_s(threads); + worker_sender(nullptr); -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" - for (auto& thr_ : threads) { + for (auto& thr_ : threads) + { + while (false == thr_.joinable()) + { + lfqueue_sleep(1); + } thr_.join(); } -#pragma GCC diagnostic pop - } @@ -264,7 +238,7 @@ lfqueue_sleep(10);\ printf("-----------%s---------------\n", "one_deq_must_and_multi_enq"); for (auto& thr_ : threads) { - thr_ = std::thread(worker_s); + thr_ = std::thread(worker_sender, nullptr); } worker_single_c_must(nullptr); @@ -278,24 +252,20 @@ lfqueue_sleep(10);\ printf("-----------%s---------------\n", "one_enq_and_multi_deq_must"); for (auto& thr_ : threads) { - thr_ = std::thread(worker_c_must); + thr_ = std::thread(worker_c_must, nullptr); } - worker_s(nullptr); + worker_sender(nullptr); -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" for (auto& thr_ : threads) { thr_.join(); } -#pragma GCC diagnostic pop - } void multi_enq_deq_must(threads_arr_type& threads) { printf("-----------%s---------------\n", "multi_enq_deq_must"); for (auto& thr_ : threads) { - thr_ = std::thread(worker_sc_must); + thr_ = std::thread(worker_sc_must, nullptr ); } for (auto& thr_ : threads) { thr_.join(); @@ -305,11 +275,9 @@ lfqueue_sleep(10);\ /// -------------------------------------------------------------------------------------------- void running_test(test_function testfn) { - int n; - for (n = 0; n < total_running_loop; n++) { - printf("Running loop %d or %d ", n, total_running_loop); - nthreads_exited = 0; + for (int n = 0; n < total_running_loop; n++) { + printf("Running loop %4d of %4d ", n, total_running_loop); /* Spawn N threads. */ threads_arr_type threads_arr_{ {} }; @@ -320,10 +288,10 @@ lfqueue_sleep(10);\ timer timer_{}; testfn(threads_arr_); - printf("Total time: %f seconds\n", as_buffer(timer_, timer::kind::second).data()); + printf("Total time: %s seconds\n", as_buffer(timer_, timer::kind::second).data()); lfqueue_sleep(10); - assert(0 == lfqueue_size(lfq_ptr_.get()) && "Error, all queue should be consumed but is not"); + assert(0 == lfqueue_size(lfq_ptr_.get()) && "Error, all queues should be consumed but they are not"); } } @@ -344,14 +312,13 @@ int main(const int, const char**) } running_test(one_enq_and_multi_deq); + /* running_test(one_enq_and_multi_deq_must); - running_test(one_deq_and_multi_enq); running_test(one_deq_must_and_multi_enq); - running_test(multi_enq_deq); running_test(multi_enq_deq_must); - + */ printf("All Tests have passed!\n"); diff --git a/lfqueue_vs201x/cpp/test/test.vcxproj b/lfqueue_vs201x/cpp/test/test.vcxproj index 90fd83d..0fcdeb6 100644 --- a/lfqueue_vs201x/cpp/test/test.vcxproj +++ b/lfqueue_vs201x/cpp/test/test.vcxproj @@ -19,9 +19,11 @@ + + diff --git a/lfqueue_vs201x/cpp/test/test.vcxproj.filters b/lfqueue_vs201x/cpp/test/test.vcxproj.filters index 2a7a05d..147bd00 100644 --- a/lfqueue_vs201x/cpp/test/test.vcxproj.filters +++ b/lfqueue_vs201x/cpp/test/test.vcxproj.filters @@ -18,10 +18,16 @@ Source Files + + Source Files + Header Files + + Header Files + \ No newline at end of file From d3affa393c6356630ac21b07761bc8be19bfc9c6 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Tue, 28 Jan 2020 21:37:36 +0100 Subject: [PATCH 06/32] setting for Visual Code, ammend for your machine --- .vscode/c_cpp_properties.json | 24 +++++++++++ .vscode/launch.json | 27 ++++++++++++ .vscode/settings.json | 79 +++++++++++++++++++++++++++++++++++ .vscode/tasks.json | 48 +++++++++++++++++++++ 4 files changed, 178 insertions(+) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..4eabe37 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,24 @@ +{ + "configurations": [ + { + "name": "Win32", + "defines": [ + "_DEBUG", + "UNICODE", + "_UNICODE" + ], + "intelliSenseMode": "msvc-x64", + "compilerPath": "D:\\PROD\\programs\\vs2019ide\\VC\\Tools\\MSVC\\14.24.28314\bin\\Hostx86\\x86\\cl.exe", + "cStandard": "c11", + "cppStandard": "c++17", + "windowsSdkVersion": "10.0.17763.0", + "includePath": [ + "D:\\PROD\\programs\\vs2019ide\\VC\\Tools\\MSVC\\14.24.28314\\include", + "D:\\Windows Kits\\10\\Include\\10.0.18362.0\\ucrt", + "D:\\Windows Kits\\10\\Include\\10.0.18362.0\\um", + "D:\\Windows Kits\\10\\Include\\10.0.18362.0\\shared" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..e510d02 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,27 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "win Launch", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}/sample/win/example_wins_dbg.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}/sample/win", + "environment": [], + "externalConsole": false + }, + { + "name": "cpp Launch", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}/sample/cpp/dbj_coroutines_dbg.exe", + "args": [], + "stopAtEntry": true, + "cwd": "${workspaceFolder}/sample/cpp", + "environment": [], + "externalConsole": false + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6d0b770 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,79 @@ +{ + // Command Prompt + // "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe" + // PowerShell + "terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", + // Git Bash + // "terminal.integrated.shell.windows": "C:/Program Files/Git/git-bash.exe", + // "terminal.integrated.shell.windows": "C:/Program Files/Git/git-bash.exe", + // Bash on Ubuntu (on Windows) + // "terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe" + "terminal.integrated.rightClickBehavior": "selectWord", + "terminal.integrated.rendererType": "dom", + "terminal.integrated.fontFamily": "consolas", + "files.associations": { + "iostream": "cpp", + "algorithm": "cpp", + "array": "cpp", + "atomic": "cpp", + "cctype": "cpp", + "chrono": "cpp", + "cmath": "cpp", + "concepts": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "exception": "cpp", + "map": "cpp", + "string": "cpp", + "xutility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "ios": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "iterator": "cpp", + "limits": "cpp", + "memory": "cpp", + "new": "cpp", + "ostream": "cpp", + "ratio": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "system_error": "cpp", + "thread": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "typeinfo": "cpp", + "utility": "cpp", + "xfacet": "cpp", + "xiosbase": "cpp", + "xlocale": "cpp", + "xlocinfo": "cpp", + "xlocmon": "cpp", + "xlocnum": "cpp", + "xloctime": "cpp", + "xmemory": "cpp", + "xstddef": "cpp", + "xstring": "cpp", + "xtr1common": "cpp", + "xtree": "cpp", + "condition_variable": "cpp", + "list": "cpp", + "resumable": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "functional": "cpp", + "future": "cpp", + "mutex": "cpp", + "optional": "cpp", + "xhash": "cpp", + "coroutine": "cpp" + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..ac41c48 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,48 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "msvc debug build", + "type": "shell", + "command": "cl.exe", + "args": [ + "/std:c++17", + "/await", + "/EHsc", + "/Zi", + "/Fe:", + "dbj_coroutines_dbg.exe", + ".doc/dbj_coroutines.cpp" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "reveal": "always" + }, + "problemMatcher": "$msCompile" + }, + { + "label": "msvc release build", + "type": "shell", + "command": "cl.exe", + "args": [ + "/std:c++17", + "/await", + "/EHsc", + "/Fe:", + "dbj_coroutines.exe", + ".doc/dbj_coroutines.cpp" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "reveal": "always" + }, + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file From b3cfe12ae7201139c6af0a06238bf72f2c2f1b86 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Tue, 28 Jan 2020 21:38:53 +0100 Subject: [PATCH 07/32] one consumer many producers, rather nice example --- sample/win/build.cmd | 6 ++ sample/win/clean.cmd | 4 + sample/win/example_wins.c | 204 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 214 insertions(+) create mode 100644 sample/win/build.cmd create mode 100644 sample/win/clean.cmd create mode 100644 sample/win/example_wins.c diff --git a/sample/win/build.cmd b/sample/win/build.cmd new file mode 100644 index 0000000..f9575ec --- /dev/null +++ b/sample/win/build.cmd @@ -0,0 +1,6 @@ + +@rem of course start from msvc developer cmd +@rem debug build -- /Zi +@rem /std:c++17 +@rem /await +cl /EHsc /Zi /Fe: example_wins_dbg.exe example_wins.c ../../lfqueue.c diff --git a/sample/win/clean.cmd b/sample/win/clean.cmd new file mode 100644 index 0000000..4c365ec --- /dev/null +++ b/sample/win/clean.cmd @@ -0,0 +1,4 @@ +rem cleaning +@del *.ilk +@del *.pdb +@del *.obj \ No newline at end of file diff --git a/sample/win/example_wins.c b/sample/win/example_wins.c new file mode 100644 index 0000000..25d21b9 --- /dev/null +++ b/sample/win/example_wins.c @@ -0,0 +1,204 @@ + + +#include +#include +#include +#include +#include +#include +#include "../../lfqueue.h" + +#ifndef LFQ_WINDOWS +#error This is Windows only code +#endif + +#define VC_EXTRALEAN +#define WIN32_LEAN_AND_MEAN +#include +#include /* _beginthread, _endthread */ + +/// -------------------------------------------------------------------------------------------- +static lfqueue_t the_queue; +#define MAX_THREADS 42 +static const int total_put = 50000; + +/// origin is a "strong type" (c) 2019 dbj@dbj.org +/// +/// void fun(origin); +/// +/// is infinitely better than +/// +/// void fun ( char * ); +/// +/// calling is even better +/// +/// fun((origin){"Producer"}); +/// +/// almost like named argument, but not, because +/// the name required is a type +/// thus type and value cleraly stated in a call +/// better than C++ variant: +/// +/// C++ +/// fun({"Producer"}); // what is the type passed? +/// +typedef struct origin_tag +{ + const char *val; +} origin; +/// -------------------------------------------------------------------------------------------- +/// one can pass objects on stack to threads, but stack is shared by default between threads +/// so for clear confusion free messaging use heap + +char *make_name_(unsigned id_, origin origin_) +{ + assert(origin_.val); + char *retval = (char *)calloc(0xF, sizeof(char)); + assert(retval); + int count = snprintf(retval, 0xF, "%s: %3d", origin_.val, id_); + assert(!(count < 0)); + return retval; +} +void free_name_(char *pn_) +{ + free(pn_); + pn_ = 0; +} +char *print_name_(void *vp_, origin origin_) +{ + assert(vp_); + assert(origin_.val); + char *pn_ = (char *)vp_; + printf("\n%16s [%16s] has started", origin_.val, pn_); + fflush(0); + return pn_; +} +char *make_message_(char *producer_name_) +{ + assert(producer_name_); + char *retval = (char *)calloc(0xFF, sizeof(char)); + assert(retval); + int count = snprintf(retval, 0xFF, "Message from: %s", producer_name_); + assert(!(count < 0)); + return retval; +} +void free_message_(char *pn_) +{ + free(pn_); + pn_ = 0; +} + +/// -------------------------------------------------------------------------------------------- +unsigned __stdcall producer(void *); +unsigned __stdcall producer(void *arg) +{ + // origin producer_ = {"Producer"}; + /* print to terminal window */ + char *name_ = print_name_(arg, (origin){""}); + /* make the message to be sent */ + char *message_ = make_message_(name_); + /* + Enqueue, consumer is responsible freeing the message + */ + while (lfqueue_enq(&the_queue, message_)) + { + perror("Q FULL for ?\n"); + } + free_name_(name_); + lfqueue_sleep(1); + return 0; +} +/// -------------------------------------------------------------------------------------------- +/// running "for ever" in his thread +unsigned __stdcall consumer(void *); +unsigned __stdcall consumer(void *arg) +{ + /* print to terminal window */ + char *name_ = print_name_(arg, (origin){"Consumer"}); + + while (1) + { + /*Dequeue + This call is only applicable when a single thread consumes messages + */ + char *message_ = lfqueue_single_deq_must(&the_queue); + + if (message_) + { + printf("\nConsumer has received: [%s]", message_); + free_name_(message_); + } + else + { + printf("\nConsumer should not be here.."); + } + fflush(0); + lfqueue_sleep(1); + } + return 0; +} + +/*----------------------------------------------------------------------------------------------*/ +int main(int argc, char **argv) +{ + //const static int MAX_THREADS = 2;//sysconf(_SC_NPROCESSORS_ONLN); // Linux + + static const int LOOP_SIZE_ = 1; + + if (lfqueue_init(&the_queue) == -1) + { + perror("LF QUEUE initialization has failed."); + return EXIT_FAILURE; + } + + for (int n = 0; n < LOOP_SIZE_; n++) + { + + /* the threads */ + HANDLE threads[MAX_THREADS] = {0}; + + unsigned consumer_thread_id = 0; + + HANDLE consumer_thread = (HANDLE)_beginthreadex(NULL, 0, consumer, + make_name_(consumer_thread_id, (origin){"Consumer"}), CREATE_SUSPENDED, NULL); + + /* begin producers, each on a separate thread */ + int i = 1; + do + { + threads[i] = (HANDLE)_beginthreadex(NULL, 0, producer, make_name_(i, (origin){"Producer"}), 0, NULL); + i++; + } while (i < MAX_THREADS); + + /// resume the single consumer + ResumeThread(consumer_thread); + /// wait 5 seconds for consumer + WaitForSingleObject(consumer_thread, 1000 * 5 /* 5 seconds */); + CloseHandle(consumer_thread); + + /// wait for producers + WaitForMultipleObjects(MAX_THREADS, threads, TRUE, INFINITE); + + // Close event handles + for (int i = 0; i < MAX_THREADS; i++) + CloseHandle(threads[i]); + + } /* main loop */ + + fflush(0); + + while (0 != lfqueue_size(&the_queue)) + { + // perror("All queues should be consumed but they are not"); + lfqueue_sleep(1); + // return EXIT_FAILURE; + } + + lfqueue_destroy(&the_queue); + + printf("\nDone, hit any key you choose ... "); + fflush(0); + getch(); + + return EXIT_SUCCESS; +} From ce5801c6f9105e8b65ab195ab5de17bb2685ac70 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Tue, 28 Jan 2020 21:40:07 +0100 Subject: [PATCH 08/32] will develop using C++17/20 await functionality --- sample/cpp/build.cmd | 5 ++++ sample/cpp/c++coroutines.md | 17 +++++++++++ sample/cpp/clean.cmd | 4 +++ sample/cpp/dbj_coroutines.cpp | 54 +++++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 sample/cpp/build.cmd create mode 100644 sample/cpp/c++coroutines.md create mode 100644 sample/cpp/clean.cmd create mode 100644 sample/cpp/dbj_coroutines.cpp diff --git a/sample/cpp/build.cmd b/sample/cpp/build.cmd new file mode 100644 index 0000000..bc7bb5b --- /dev/null +++ b/sample/cpp/build.cmd @@ -0,0 +1,5 @@ + +@rem of course start from msvc developer cmd +@rem debug build -- /Zi + +cl /std:c++17 /await /EHsc /Zi /Fe: dbj_coroutines_dbg.exe dbj_coroutines.cpp \ No newline at end of file diff --git a/sample/cpp/c++coroutines.md b/sample/cpp/c++coroutines.md new file mode 100644 index 0000000..03dd92f --- /dev/null +++ b/sample/cpp/c++coroutines.md @@ -0,0 +1,17 @@ + + + +# C++ COROUTINES + +*"...After a long time of doubts, opposition, and preparation of this feature, WG21 agreed on how the coroutines should look like and it’s very likely that coroutines will come into C++ 20. Since it’s a big feature I think it’s good to start preparing and learning this now (remember there are also modules, concepts, and ranges in the to learn list )..."* -- [Dawid Pilarski](https://blog.panicsoftware.com/about-me/) + +*"...Coroutines are not Threads..."* -- [Dusan Jovanovic](https://dusanjovanovic.org/) + +Pretty good intro on co routines: [CppCon 2016: James McNellis “Introduction to C++ Coroutines"](https://youtu.be/ZTqHjjm86Bw) + +For detailed, alas necessary "micro course"for the ones needing to "go deep": + +1. ### [COROUTINES INTRODUCTION](https://blog.panicsoftware.com/coroutines-introduction/) +2. ### [YOUR FIRST COROUTINE](https://blog.panicsoftware.com/your-first-coroutine/) + - this is about how one would implement his/her own [`promise`](https://en.cppreference.com/w/cpp/thread/promise) type. Please just "observe" on first read. Or skipe enitrely as this is not a required level, from an "regular developer". +4. ### [CO_AWAITING COROUTINES](https://blog.panicsoftware.com/co_awaiting-coroutines/) \ No newline at end of file diff --git a/sample/cpp/clean.cmd b/sample/cpp/clean.cmd new file mode 100644 index 0000000..4c365ec --- /dev/null +++ b/sample/cpp/clean.cmd @@ -0,0 +1,4 @@ +rem cleaning +@del *.ilk +@del *.pdb +@del *.obj \ No newline at end of file diff --git a/sample/cpp/dbj_coroutines.cpp b/sample/cpp/dbj_coroutines.cpp new file mode 100644 index 0000000..8b6d2e2 --- /dev/null +++ b/sample/cpp/dbj_coroutines.cpp @@ -0,0 +1,54 @@ +/// https://gist.github.com/yizhang82/28842f7dbae34b59fcd7b4d74b4a19d4 +#include +#include + +using namespace std; + +///------------------------------------------------------ +future async_add(int a, int b) +{ + auto fut = std::async([=]() { + int c = a + b; + return c; + }); + + return fut; +} +///------------------------------------------------------ +future async_fib(int n) +{ + if (n <= 2) + co_return 1; + + int a = 1; + int b = 1; + + // iterate computing fib(n) + for (int i = 0; i < n - 2; ++i) + { + int c = co_await async_add(a, b); + a = b; + b = c; + } + + co_return b; +} + +///------------------------------------------------------ +future test_async_fib() +{ + for (int i = 1; i < 10; ++i) + { + int ret = co_await async_fib(i); + cout << "async_fib(" << i << ") returns " << ret << endl; + } +} + +///------------------------------------------------------ +int main() +{ + auto fut = test_async_fib(); + fut.wait(); + + return 0; +} From 16924b0698e7c901fb5d6950db8e5aece43a7b26 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Tue, 28 Jan 2020 21:40:53 +0100 Subject: [PATCH 09/32] just moved to separate folder --- sample/linux/example.c | 316 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 sample/linux/example.c diff --git a/sample/linux/example.c b/sample/linux/example.c new file mode 100644 index 0000000..93c0195 --- /dev/null +++ b/sample/linux/example.c @@ -0,0 +1,316 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "lfqueue.h" + + +typedef void (*test_function)(pthread_t*); + +void one_enq_and_multi_deq(pthread_t *threads); +void one_deq_and_multi_enq(pthread_t *threads); +void multi_enq_deq(pthread_t *threads); +void* worker_sc(void *); +void* worker_s(void *); +void* worker_c(void *); +void* worker_single_c(void *); + +/**Testing must**/ +void one_enq_and_multi_deq_must(pthread_t *threads); +void one_deq_must_and_multi_enq(pthread_t *threads); +void multi_enq_deq_must(pthread_t *threads); +void* worker_sc_must(void *); +void* worker_s_must(void *); +void* worker_c_must(void *); +void* worker_single_c_must(void *); + +void running_test(test_function testfn); + +struct timeval tv1, tv2; +#define total_put 50000 +#define total_running_loop 50 +int nthreads = 4; +int one_thread = 1; +int nthreads_exited = 0; +lfqueue_t *myq; + + + +void* worker_c_must(void *arg) { + int i = 0; + int *int_data; + int total_loop = total_put * (*(int*)arg); + while (i++ < total_loop) { + /*Dequeue*/ + int_data = lfqueue_deq_must(myq); + // printf("%d\n", *int_data); + + free(int_data); + } + __sync_add_and_fetch(&nthreads_exited, 1); + return 0; +} + +void* worker_single_c_must(void *arg) { + int i = 0; + int *int_data; + int total_loop = total_put * (*(int*)arg); + while (i++ < total_loop) { + /*Dequeue*/ + int_data = lfqueue_single_deq_must(myq); + // printf("%d\n", *int_data); + + free(int_data); + } + __sync_add_and_fetch(&nthreads_exited, 1); + return 0; +} + +void* worker_sc_must(void *arg) +{ + int i = 0; + int *int_data; + while (i < total_put) { + int_data = (int*)malloc(sizeof(int)); + assert(int_data != NULL); + *int_data = i++; + /*Enqueue*/ + while (lfqueue_enq(myq, int_data)) { + printf("ENQ FULL?\n"); + } + + /*Dequeue*/ + int_data = lfqueue_deq_must(myq); + // printf("%d\n", *int_data); + free(int_data); + } + __sync_add_and_fetch(&nthreads_exited, 1); + return 0; +} + +void* worker_c(void *arg) { + int i = 0; + int *int_data; + int total_loop = total_put * (*(int*)arg); + while (i++ < total_loop) { + /*Dequeue*/ + while ((int_data = lfqueue_deq(myq)) == NULL) { + lfqueue_sleep(1); + } + // printf("%d\n", *int_data); + + free(int_data); + } + __sync_add_and_fetch(&nthreads_exited, 1); + return 0; +} + +void* worker_single_c(void *arg) { + int i = 0; + int *int_data; + int total_loop = total_put * (*(int*)arg); + while (i++ < total_loop) { + /*Dequeue*/ + while ((int_data = lfqueue_single_deq(myq)) == NULL) { + lfqueue_sleep(1); + } + // printf("%d\n", *int_data); + + free(int_data); + } + __sync_add_and_fetch(&nthreads_exited, 1); + return 0; +} + +/** Worker Keep Sending at the same time, do not try instensively **/ +void* worker_s(void *arg) +{ + int i = 0, *int_data; + int total_loop = total_put * (*(int*)arg); + while (i++ < total_loop) { + int_data = (int*)malloc(sizeof(int)); + assert(int_data != NULL); + *int_data = i; + /*Enqueue*/ + + while (lfqueue_enq(myq, int_data)) { + // printf("ENQ FULL?\n"); + } + } + // __sync_add_and_fetch(&nthreads_exited, 1); + return 0; +} + +/** Worker Send And Consume at the same time **/ +void* worker_sc(void *arg) +{ + int i = 0; + int *int_data; + while (i < total_put) { + int_data = (int*)malloc(sizeof(int)); + assert(int_data != NULL); + *int_data = i++; + /*Enqueue*/ + while (lfqueue_enq(myq, int_data)) { + printf("ENQ FULL?\n"); + } + + /*Dequeue*/ + while ((int_data = lfqueue_deq(myq)) == NULL) { + lfqueue_sleep(1); + } + // printf("%d\n", *int_data); + free(int_data); + } + __sync_add_and_fetch(&nthreads_exited, 1); + return 0; +} + +#define join_threads \ +for (i = 0; i < nthreads; i++) {\ +pthread_join(threads[i], NULL); \ +} + +#define detach_thread_and_loop \ +for (i = 0; i < nthreads; i++)\ +pthread_detach(threads[i]);\ +while ( nthreads_exited < nthreads ) \ + lfqueue_sleep(10);\ +if(lfqueue_size(myq) != 0){\ +lfqueue_sleep(10);\ +} + +void multi_enq_deq(pthread_t *threads) { + printf("-----------%s---------------\n", "multi_enq_deq"); + int i; + for (i = 0; i < nthreads; i++) { + pthread_create(threads + i, NULL, worker_sc, NULL); + } + + join_threads; + // detach_thread_and_loop; +} + +void one_deq_and_multi_enq(pthread_t *threads) { + printf("-----------%s---------------\n", "one_deq_and_multi_enq"); + int i; + for (i = 0; i < nthreads; i++) + pthread_create(threads + i, NULL, worker_s, &one_thread); + + worker_single_c(&nthreads); + + join_threads; + // detach_thread_and_loop; +} + +void one_enq_and_multi_deq(pthread_t *threads) { + printf("-----------%s---------------\n", "one_enq_and_multi_deq"); + int i; + for (i = 0; i < nthreads; i++) + pthread_create(threads + i, NULL, worker_c, &one_thread); + + worker_s(&nthreads); + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" + detach_thread_and_loop; +#pragma GCC diagnostic pop + +} + + +void one_deq_must_and_multi_enq(pthread_t *threads) { + printf("-----------%s---------------\n", "one_deq_must_and_multi_enq"); + int i; + for (i = 0; i < nthreads; i++) + pthread_create(threads + i, NULL, worker_s, &one_thread); + + worker_single_c_must(&nthreads); + + join_threads; + // detach_thread_and_loop; +} + +void one_enq_and_multi_deq_must(pthread_t *threads) { + printf("-----------%s---------------\n", "one_enq_and_multi_deq_must"); + int i; + for (i = 0; i < nthreads; i++) + pthread_create(threads + i, NULL, worker_c_must, &one_thread); + + worker_s(&nthreads); + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" + detach_thread_and_loop; +#pragma GCC diagnostic pop + +} + +void multi_enq_deq_must(pthread_t *threads) { + printf("-----------%s---------------\n", "multi_enq_deq_must"); + int i; + for (i = 0; i < nthreads; i++) { + pthread_create(threads + i, NULL, worker_sc_must, NULL); + } + + join_threads; + // detach_thread_and_loop; +} + +void running_test(test_function testfn) { + int n; + for (n = 0; n < total_running_loop; n++) { + printf("Current running at =%d, ", n); + nthreads_exited = 0; + /* Spawn threads. */ + pthread_t threads[nthreads]; + printf("Using %d thread%s.\n", nthreads, nthreads == 1 ? "" : "s"); + printf("Total requests %d \n", total_put); + gettimeofday(&tv1, NULL); + + testfn(threads); + // one_enq_and_multi_deq(threads); + + //one_deq_and_multi_enq(threads); + // multi_enq_deq(threads); + // worker_s(&ri); + // worker_c(&ri); + + gettimeofday(&tv2, NULL); + printf ("Total time = %f seconds\n", + (double) (tv2.tv_usec - tv1.tv_usec) / 1000000 + + (double) (tv2.tv_sec - tv1.tv_sec)); + + lfqueue_sleep(10); + assert ( 0 == lfqueue_size(myq) && "Error, all queue should be consumed but not"); + } +} + +int main(void) { + myq = malloc(sizeof (lfqueue_t)); + if (lfqueue_init(myq) == -1) + return -1; + + running_test(one_enq_and_multi_deq); + running_test(one_enq_and_multi_deq_must); + + running_test(one_deq_and_multi_enq); + running_test(one_deq_must_and_multi_enq); + + running_test(multi_enq_deq); + running_test(multi_enq_deq_must); + + + lfqueue_destroy(myq); + // sleep(3); + free(myq); + + printf("Test Pass!\n"); + + return 0; +} + From cffe589ec5758f0b8a4589c9efb9b1bccae66a6c Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Tue, 28 Jan 2020 21:41:46 +0100 Subject: [PATCH 10/32] removed --- lfqueue_vs201x/.gitignore | 333 ------------------ lfqueue_vs201x/cpp/test.cpp | 327 ----------------- lfqueue_vs201x/cpp/test.h | 174 --------- lfqueue_vs201x/cpp/test/test.sln | 31 -- lfqueue_vs201x/cpp/test/test.vcxproj | 164 --------- lfqueue_vs201x/cpp/test/test.vcxproj.filters | 33 -- lfqueue_vs201x/lfqueue_vs201x.sln | 31 -- lfqueue_vs201x/lfqueue_vs201x.vcxproj | 123 ------- lfqueue_vs201x/lfqueue_vs201x.vcxproj.filters | 30 -- 9 files changed, 1246 deletions(-) delete mode 100644 lfqueue_vs201x/.gitignore delete mode 100644 lfqueue_vs201x/cpp/test.cpp delete mode 100644 lfqueue_vs201x/cpp/test.h delete mode 100644 lfqueue_vs201x/cpp/test/test.sln delete mode 100644 lfqueue_vs201x/cpp/test/test.vcxproj delete mode 100644 lfqueue_vs201x/cpp/test/test.vcxproj.filters delete mode 100644 lfqueue_vs201x/lfqueue_vs201x.sln delete mode 100644 lfqueue_vs201x/lfqueue_vs201x.vcxproj delete mode 100644 lfqueue_vs201x/lfqueue_vs201x.vcxproj.filters diff --git a/lfqueue_vs201x/.gitignore b/lfqueue_vs201x/.gitignore deleted file mode 100644 index 197f216..0000000 --- a/lfqueue_vs201x/.gitignore +++ /dev/null @@ -1,333 +0,0 @@ - -.out/ - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ -**/Properties/launchSettings.json - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ \ No newline at end of file diff --git a/lfqueue_vs201x/cpp/test.cpp b/lfqueue_vs201x/cpp/test.cpp deleted file mode 100644 index fa541ba..0000000 --- a/lfqueue_vs201x/cpp/test.cpp +++ /dev/null @@ -1,327 +0,0 @@ - -#include "test.h" - -namespace lf_queue { - - namespace test { - - /// ------------------------------------------------------------------------------------------ - constexpr auto total_put = 50000U; - constexpr auto total_running_loop = 50U; - constexpr int nthreads = 4; - int one_thread = 1; - int nthreads_exited = 0; - - /// ------------------------------------------------------------------------------------------ - struct lfq_deletor_type { - void operator ()(lf_queue::lfqueue_t* lfqueue) { - lfqueue_destroy(lfqueue); - delete lfqueue; - lfqueue = nullptr; - } - }; - - using lfq_queue_ptr = std::unique_ptr; - // global for this file - static lfq_queue_ptr lfq_ptr_{ new lfqueue_t }; - - using threads_arr_type = std::array< std::thread, nthreads >; - - using message_type = const char*; - //----------------------------------------------------------------------------------------------- - - // pass the reference to the array of std::thread's - typedef void (*test_function)(threads_arr_type&); - - void one_enq_and_multi_deq(threads_arr_type&); - void one_deq_and_multi_enq(threads_arr_type&); - void multi_enq_deq(threads_arr_type&); - - void* worker_sender_consumer(void*); - void* worker_sender(void*); - void* worker_consumer(void*); - void* worker_single_c(void*); - - /**Testing must**/ - void one_enq_and_multi_deq_must(threads_arr_type&); - void one_deq_must_and_multi_enq(threads_arr_type&); - void multi_enq_deq_must(threads_arr_type&); - - void* worker_sc_must(void*); - // void* worker_s_must(void*); - void* worker_c_must(void*); - void* worker_single_c_must(void*); - - void running_test(test_function testfn); - - - /// --------------------------------------------------------------------------------------------- - - void* worker_c_must(void* arg) { - int multiplier_{ 1 }; - if (arg) { - multiplier_ = int(*((int*)arg)); - } - int total_loop = total_put * multiplier_; - while ( --total_loop) { - /*Dequeue*/ - message_type data_ = (message_type)lfqueue_deq_must(lfq_ptr_.get()); - - if ( data_ ) printf("\n%s", data_); - } - return 0; - } - - /// --------------------------------------------------------------------------------------------- - void* worker_single_c_must(void* arg) - { - int multiplier_{ 1 }; - if (arg) { - multiplier_ = int(*((int*)arg)); - } - int total_loop = total_put * multiplier_; - while (--total_loop) { - /*Dequeue*/ - auto payload = (message_type)lfqueue_single_deq_must(lfq_ptr_.get()); - if (payload) printf("\n%s", payload); - } - return 0; - } - /// --------------------------------------------------------------------------------------------- - void* worker_sc_must(void* arg) - { - int multiplier_{ 1 }; - if (arg) { - multiplier_ = int(*((int*)arg)); - } - int total_loop = total_put * multiplier_; - message_type payload = __FUNCSIG__; - - while ( --total_loop) { - /*Enqueue*/ - while (lfqueue_enq(lfq_ptr_.get(), (void*)payload)) { - printf("ENQ FULL?\n"); - } - /*Dequeue*/ - message_type payload_received = (message_type)lfqueue_deq_must(lfq_ptr_.get()); - if (payload_received) - printf("\n%s", payload_received); - - if (payload_received) printf("\n" __FUNCSIG__ " -- received -- %s\n", payload_received); - } - return 0; - } - /// --------------------------------------------------------------------------------------------- - - void* worker_consumer(void* arg) { - - int total_loop = total_put ; - printf("\n"); - while (--total_loop) { - /*Dequeue*/ - message_type data_{}; - while (( data_ = (message_type)lfqueue_deq(lfq_ptr_.get())) == nullptr) { - lfqueue_sleep(1); - } - if(data_) printf( "\r worker_consumer <-- received --| %32s [%6d]", data_, total_loop); - } - printf("\n"); - return 0; - } - - /// --------------------------------------------------------------------------------------------- - void* worker_single_c(void* arg) { - int total_loop = total_put ; - while (--total_loop) { - /*Dequeue*/ - message_type data_{}; - while ((data_ = (message_type)lfqueue_single_deq(lfq_ptr_.get())) == nullptr) { - lfqueue_sleep(1); - } - if (data_) printf("\nworker_single_c-- received -- %s\n", data_); - } - return 0; - } - - /// --------------------------------------------------------------------------------------------- - /** Worker Keep Sending at the same time, do not try instensively **/ - void* worker_sender(void* arg) - { - int total_loop = total_put ; - - static message_type payload = " worker_sender message " ; - - while (--total_loop) { - - /*Enqueue*/ - while (lfqueue_enq(lfq_ptr_.get(), &payload)) - { - printf( " worker_sender() -- ENQ FULL?\n"); - } - - lfqueue_sleep(1); // sleep one millisecond - } - return 0; - } - - /// --------------------------------------------------------------------------------------------- - /** Worker Send And Consume at the same time **/ - void* worker_sender_consumer(void* arg) - { - int total_loop = total_put ; - static message_type payload = "worker_sender_consumer message"; - while (--total_loop) { - /*Enqueue*/ - while (lfqueue_enq(lfq_ptr_.get(), (void*)payload)) { - printf("ENQ FULL?\n"); - } - /*Dequeue*/ - while ((payload = (message_type)lfqueue_deq(lfq_ptr_.get())) == nullptr) { - lfqueue_sleep(1); - } - if (payload) printf("\rworker_sender_consumer -- received -- %30s [%6d]", payload, total_loop); - } - return 0; - } - - /// -------------------------------------------------------------------------------------------- - /// functions given to running_test() - /// -------------------------------------------------------------------------------------------- - - void multi_enq_deq(threads_arr_type& threads) { - printf("-----------%s---------------\n", "multi_enq_deq"); - - for (auto& thr_ : threads) { - thr_ = std::thread(worker_sender_consumer, nullptr); - } - - for (auto& thr_ : threads) { - thr_.join(); - } - } - - void one_deq_and_multi_enq(threads_arr_type& threads) { - printf("-----------%s---------------\n", "one_deq_and_multi_enq"); - - for (auto& thr_ : threads) { - thr_ = std::thread(worker_sender,nullptr); - } - - worker_single_c(nullptr); - - for (auto& thr_ : threads) { - thr_.join(); - } - } - ///------------------------------------------------------------------------------------------- - void one_enq_and_multi_deq(threads_arr_type& threads) { - printf("-----------%s---------------\n", "one_enq_and_multi_deq"); - - for (auto& thr_ : threads) { - thr_ = std::thread(worker_consumer,nullptr); - } - - worker_sender(nullptr); - - for (auto& thr_ : threads) - { - while (false == thr_.joinable()) - { - lfqueue_sleep(1); - } - thr_.join(); - } - } - - - void one_deq_must_and_multi_enq(threads_arr_type& threads) { - printf("-----------%s---------------\n", "one_deq_must_and_multi_enq"); - - for (auto& thr_ : threads) { - thr_ = std::thread(worker_sender, nullptr); - } - - worker_single_c_must(nullptr); - - for (auto& thr_ : threads) { - thr_.join(); - } - } - - void one_enq_and_multi_deq_must(threads_arr_type& threads) { - printf("-----------%s---------------\n", "one_enq_and_multi_deq_must"); - - for (auto& thr_ : threads) { - thr_ = std::thread(worker_c_must, nullptr); - } - - worker_sender(nullptr); - - for (auto& thr_ : threads) { - thr_.join(); - } - } - - void multi_enq_deq_must(threads_arr_type& threads) { - printf("-----------%s---------------\n", "multi_enq_deq_must"); - for (auto& thr_ : threads) { - thr_ = std::thread(worker_sc_must, nullptr ); - } - for (auto& thr_ : threads) { - thr_.join(); - } - } - - /// -------------------------------------------------------------------------------------------- - - void running_test(test_function testfn) { - - for (int n = 0; n < total_running_loop; n++) { - printf("Running loop %4d of %4d ", n, total_running_loop); - - /* Spawn N threads. */ - threads_arr_type threads_arr_{ {} }; - - printf("Using %d thread%s.\n", nthreads, nthreads == 1 ? "" : "s"); - printf("Total requests %d \n", total_put); - - timer timer_{}; - testfn(threads_arr_); - - printf("Total time: %s seconds\n", as_buffer(timer_, timer::kind::second).data()); - - lfqueue_sleep(10); - assert(0 == lfqueue_size(lfq_ptr_.get()) && "Error, all queues should be consumed but they are not"); - } - } - - } // namespace test - -} // lf_queue - -/// ------------------------------------------------------------------------------------------ -int main(const int, const char**) -{ - using namespace lf_queue; - using namespace lf_queue::test; - - if (lfqueue_init(lfq_ptr_.get()) == -1) - { - perror(__FILE__ " -- lfqueue_init() has failed "); - return EXIT_FAILURE; - } - - running_test(one_enq_and_multi_deq); - /* - running_test(one_enq_and_multi_deq_must); - running_test(one_deq_and_multi_enq); - running_test(one_deq_must_and_multi_enq); - running_test(multi_enq_deq); - running_test(multi_enq_deq_must); - */ - - printf("All Tests have passed!\n"); - - return EXIT_SUCCESS; -} - diff --git a/lfqueue_vs201x/cpp/test.h b/lfqueue_vs201x/cpp/test.h deleted file mode 100644 index df83c30..0000000 --- a/lfqueue_vs201x/cpp/test.h +++ /dev/null @@ -1,174 +0,0 @@ -#pragma once - -/* ------------------------------------------------------------------------------------------------- -CHECK FOR C++ VERSION ------------------------------------------------------------------------------------------------- -Note: these should be intrinsic macros -*/ - -// this is MSVC STD LIB code -// it actually does not depend on C++20 __cplusplus -// which is yet undefined as of 2020 Q1 - -#if !defined(LFQ_HAS_CXX17) && !defined(LFQ_HAS_CXX20) - -#if defined(_MSVC_LANG) -#define LFQ__STL_LANG _MSVC_LANG -#else -#define LFQ__STL_LANG __cplusplus -#endif - -#if LFQ__STL_LANG > 201703L -#define LFQ_HAS_CXX17 1 -#define LFQ_HAS_CXX20 1 -#elif LFQ__STL_LANG > 201402L -#define LFQ_HAS_CXX17 1 -#define LFQ_HAS_CXX20 0 -#else // LFQ__STL_LANG <= 201402L -#define LFQ_HAS_CXX17 0 -#define LFQ_HAS_CXX20 0 -#endif // Use the value of LFQ__STL_LANG to define LFQ_HAS_CXX17 and \ - // LFQ_HAS_CXX20 - -// #undef LFQ__STL_LANG -#endif // !defined(LFQ_HAS_CXX17) && !defined(LFQ_HAS_CXX20) - -#ifndef LFQ_HAS_CXX17 -#error C++17 is required -#endif // LFQ_HAS_CXX17 - - /* - We include climits so that non intrinsic macros are avaiable too. - For C++20 that should be the role of the header - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0754r2.pdf - -*/ -/* -LINUX headers -#include -#include -#include -*/ -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -// C API is in lf_queue namespace when consumed from C++ -#include "../../lfqueue.h" - -namespace lf_queue::test { - -/* -Usage: - -stopwatch::precise stopwatch{}; - -Note: all timings are integer types, no decimals - -auto nanos_ = stopwatch.elapsed(); -auto millis_ = stopwatch.elapsed(); -auto micros_ = stopwatch.elapsed(); -auto secos_ = stopwatch.elapsed(); -*/ -// https://wandbox.org/permlink/BHVUDSoZn1Cm8yzo - namespace stopwatch - { - template - class engine - { - const typename CLOCK::time_point start_point{}; - - public: - engine() : start_point(CLOCK::now()) - { - } - - template < - typename REP = typename CLOCK::duration::rep, - typename UNITS = typename CLOCK::duration> - REP elapsed() const - { - std::atomic_thread_fence(std::memory_order_relaxed); - auto elapsed_ = - std::chrono::duration_cast(CLOCK::now() - start_point).count(); - std::atomic_thread_fence(std::memory_order_relaxed); - return static_cast(elapsed_); - } - }; - - using precise = engine<>; - using system = engine; - using monotonic = engine; - } // namespace stopwatch - - /// times as decimals - struct timer final - { - using buffer = std::array; - using CLOCK = typename std::chrono::high_resolution_clock; - using timepoint = typename CLOCK::time_point; - const timepoint start_ = CLOCK::now(); - - double nano() const - { - std::atomic_thread_fence(std::memory_order_relaxed); - double rez_ = static_cast((CLOCK::now() - start_).count()); - std::atomic_thread_fence(std::memory_order_relaxed); - return rez_; - } - - double micro() const { return nano() / 1000.0; } - double milli() const { return micro() / 1000.0; } - double seconds() const { return milli() / 1000.0; } - // double decimal3(double arg) { return (std::round(arg * 1000)) / 1000; } - - enum class kind - { - nano, - micro, - milli, - second - }; - - - /// timer timer_{} ; - /// auto microsecs_ = as_buffer( timer_ ); - /// auto secs_ = as_buffer( timer_, timer::kind::second ); - - friend buffer as_buffer(timer const& timer_, kind which_ = kind::milli) - { - buffer retval{ char{0} }; - double arg{}; - char const* unit_{}; - switch (which_) - { - case kind::nano: - arg = timer_.nano(); - unit_ = " nano seconds "; - break; - case kind::micro: - arg = timer_.micro(); - unit_ = " micro seconds "; - break; - case kind::milli: - arg = timer_.milli(); - unit_ = " milli seconds "; - break; - default: //seconds - arg = timer_.seconds(); - unit_ = " seconds "; - } - std::snprintf(retval.data(), retval.size(), "%.3f%s", arg, unit_); - return retval; - } - }; // timer - -} // lf_queue::test \ No newline at end of file diff --git a/lfqueue_vs201x/cpp/test/test.sln b/lfqueue_vs201x/cpp/test/test.sln deleted file mode 100644 index d5d71da..0000000 --- a/lfqueue_vs201x/cpp/test/test.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29709.97 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcxproj", "{AA548A31-DC2F-486C-B464-0DC14B6C5165}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Debug|x64.ActiveCfg = Debug|x64 - {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Debug|x64.Build.0 = Debug|x64 - {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Debug|x86.ActiveCfg = Debug|Win32 - {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Debug|x86.Build.0 = Debug|Win32 - {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Release|x64.ActiveCfg = Release|x64 - {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Release|x64.Build.0 = Release|x64 - {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Release|x86.ActiveCfg = Release|Win32 - {AA548A31-DC2F-486C-B464-0DC14B6C5165}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0197EAAE-346C-4386-8F6E-237A30ACFE92} - EndGlobalSection -EndGlobal diff --git a/lfqueue_vs201x/cpp/test/test.vcxproj b/lfqueue_vs201x/cpp/test/test.vcxproj deleted file mode 100644 index 0fcdeb6..0000000 --- a/lfqueue_vs201x/cpp/test/test.vcxproj +++ /dev/null @@ -1,164 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - 16.0 - {AA548A31-DC2F-486C-B464-0DC14B6C5165} - Win32Proj - test - 10.0 - - - - Application - true - v142 - Unicode - - - Application - false - v142 - true - Unicode - - - Application - true - v142 - Unicode - - - Application - false - v142 - true - Unicode - - - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - - - Console - true - - - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - - - Console - true - - - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - - - Console - true - true - true - - - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - - - Console - true - true - true - - - - - - \ No newline at end of file diff --git a/lfqueue_vs201x/cpp/test/test.vcxproj.filters b/lfqueue_vs201x/cpp/test/test.vcxproj.filters deleted file mode 100644 index 147bd00..0000000 --- a/lfqueue_vs201x/cpp/test/test.vcxproj.filters +++ /dev/null @@ -1,33 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - \ No newline at end of file diff --git a/lfqueue_vs201x/lfqueue_vs201x.sln b/lfqueue_vs201x/lfqueue_vs201x.sln deleted file mode 100644 index 4b4f7be..0000000 --- a/lfqueue_vs201x/lfqueue_vs201x.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27703.2042 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lfqueue_vs201x", "lfqueue_vs201x.vcxproj", "{791DBD15-5878-4EEB-A9D3-FA94C82E03B7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7}.Debug|x64.ActiveCfg = Debug|x64 - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7}.Debug|x64.Build.0 = Debug|x64 - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7}.Debug|x86.ActiveCfg = Debug|Win32 - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7}.Debug|x86.Build.0 = Debug|Win32 - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7}.Release|x64.ActiveCfg = Release|x64 - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7}.Release|x64.Build.0 = Release|x64 - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7}.Release|x86.ActiveCfg = Release|Win32 - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {27ADFC06-52B2-48DA-A1A1-7A8606E0D595} - EndGlobalSection -EndGlobal diff --git a/lfqueue_vs201x/lfqueue_vs201x.vcxproj b/lfqueue_vs201x/lfqueue_vs201x.vcxproj deleted file mode 100644 index dea1950..0000000 --- a/lfqueue_vs201x/lfqueue_vs201x.vcxproj +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 15.0 - {791DBD15-5878-4EEB-A9D3-FA94C82E03B7} - lfqueuevs201x - 10.0 - - - - Application - true - v142 - MultiByte - - - Application - false - v142 - true - MultiByte - - - Application - true - v142 - MultiByte - - - Application - false - v142 - true - MultiByte - - - - - - - - - - - - - - - - - - - - - - - Level3 - Disabled - true - - - - - Level3 - Disabled - true - - - - - Level3 - MaxSpeed - true - true - true - - - true - true - - - - - Level3 - MaxSpeed - true - true - true - - - true - true - - - - - - - - - - - - - \ No newline at end of file diff --git a/lfqueue_vs201x/lfqueue_vs201x.vcxproj.filters b/lfqueue_vs201x/lfqueue_vs201x.vcxproj.filters deleted file mode 100644 index ccd78a8..0000000 --- a/lfqueue_vs201x/lfqueue_vs201x.vcxproj.filters +++ /dev/null @@ -1,30 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - - - Header Files - - - \ No newline at end of file From 7d0cba0300236b7e1ed1e8b0a88e99a077b52870 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Tue, 28 Jan 2020 21:42:56 +0100 Subject: [PATCH 11/32] mainly cosmetics --- lfqueue.h | 74 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/lfqueue.h b/lfqueue.h index 9621549..41d2f44 100644 --- a/lfqueue.h +++ b/lfqueue.h @@ -50,7 +50,7 @@ #define LFQ_UNIX // ... #else -#error Unknown runtime +#error Unknown runtime #endif #ifdef NDEBUG @@ -58,7 +58,7 @@ #define LFQ_RELEASE #else #define LFQ_BUILD "DEBUG" -#undef LFQ_RELEASE +#undef LFQ_DEBUG #endif /*----------------------------------------------------------------------------------------------*/ @@ -69,17 +69,24 @@ #define LFQ_NAMESPACE lf_queue #ifdef __cplusplus -namespace LFQ_NAMESPACE { - extern "C" { +namespace LFQ_NAMESPACE +{ +extern "C" +{ #endif - /*----------------------------------------------------------------------------------------------*/ - typedef enum {major = 1, minor = 3, patch = 0 } VERSION ; - /*----------------------------------------------------------------------------------------------*/ + /*----------------------------------------------------------------------------------------------*/ + typedef enum + { + major = 1, + minor = 3, + patch = 0 + } VERSION; + /*----------------------------------------------------------------------------------------------*/ - typedef struct lfqueue_cas_node_s lfqueue_cas_node_t; - typedef void* (*lfqueue_malloc_fn)(void*, size_t); - typedef void (*lfqueue_free_fn)(void*, void*); + typedef struct lfqueue_cas_node_s lfqueue_cas_node_t; + typedef void *(*lfqueue_malloc_fn)(void *, size_t); + typedef void (*lfqueue_free_fn)(void *, void *); #if defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ #define lfq_bool_t int @@ -91,36 +98,35 @@ namespace LFQ_NAMESPACE { #endif #endif - typedef struct { - lfqueue_cas_node_t* head, * tail, * root_free, * move_free; - volatile size_t size; - volatile lfq_bool_t in_free_mode; - lfqueue_malloc_fn _malloc; - lfqueue_free_fn _free; - void* pl; - } lfqueue_t; + typedef struct + { + lfqueue_cas_node_t *head, *tail, *root_free, *move_free; + volatile size_t size; + volatile lfq_bool_t in_free_mode; + lfqueue_malloc_fn _malloc; + lfqueue_free_fn _free; + void *pl; + } lfqueue_t; - /*----------------------------------------------------------------------------------------------*/ + /*----------------------------------------------------------------------------------------------*/ - extern int lfqueue_init(lfqueue_t* lfqueue); - extern int lfqueue_init_mf(lfqueue_t* lfqueue, void* pl, lfqueue_malloc_fn lfqueue_malloc, lfqueue_free_fn lfqueue_free); - extern int lfqueue_enq(lfqueue_t* lfqueue, void* value); - extern void* lfqueue_deq(lfqueue_t* lfqueue); - extern void* lfqueue_single_deq(lfqueue_t* lfqueue); + extern int lfqueue_init(lfqueue_t *lfqueue); + extern int lfqueue_init_mf(lfqueue_t *lfqueue, void *pl, lfqueue_malloc_fn lfqueue_malloc, lfqueue_free_fn lfqueue_free); + extern int lfqueue_enq(lfqueue_t *lfqueue, void *value); + extern void *lfqueue_deq(lfqueue_t *lfqueue); + extern void *lfqueue_single_deq(lfqueue_t *lfqueue); - /** loop until value been dequeue, it sleeps 1ms if not found to reduce cpu high usage **/ - extern void* lfqueue_deq_must(lfqueue_t* lfqueue); - extern void* lfqueue_single_deq_must(lfqueue_t* lfqueue); - - extern void lfqueue_destroy(lfqueue_t* lfqueue); - extern size_t lfqueue_size(lfqueue_t* lfqueue); - extern void lfqueue_sleep(unsigned int milisec); + /** loop until value been dequeue, it sleeps 1ms if not found to reduce cpu high usage **/ + extern void *lfqueue_deq_must(lfqueue_t *lfqueue); + extern void *lfqueue_single_deq_must(lfqueue_t *lfqueue); + extern void lfqueue_destroy(lfqueue_t *lfqueue); + extern size_t lfqueue_size(lfqueue_t *lfqueue); + extern void lfqueue_sleep(unsigned int milisec); #ifdef __cplusplus - } // extern "C" -} // namespace LFQ_NAMESPACE +} // extern "C" +} // namespace LFQ_NAMESPACE #endif #endif /* LFQUEUE_H */ - From 2387b73525afe47feadd948e12be76076232dc8b Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Tue, 28 Jan 2020 21:44:36 +0100 Subject: [PATCH 12/32] deleted --- example.c | 316 ------------------------------------------------- example_wins.c | 133 --------------------- 2 files changed, 449 deletions(-) delete mode 100644 example.c delete mode 100644 example_wins.c diff --git a/example.c b/example.c deleted file mode 100644 index 93c0195..0000000 --- a/example.c +++ /dev/null @@ -1,316 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include "lfqueue.h" - - -typedef void (*test_function)(pthread_t*); - -void one_enq_and_multi_deq(pthread_t *threads); -void one_deq_and_multi_enq(pthread_t *threads); -void multi_enq_deq(pthread_t *threads); -void* worker_sc(void *); -void* worker_s(void *); -void* worker_c(void *); -void* worker_single_c(void *); - -/**Testing must**/ -void one_enq_and_multi_deq_must(pthread_t *threads); -void one_deq_must_and_multi_enq(pthread_t *threads); -void multi_enq_deq_must(pthread_t *threads); -void* worker_sc_must(void *); -void* worker_s_must(void *); -void* worker_c_must(void *); -void* worker_single_c_must(void *); - -void running_test(test_function testfn); - -struct timeval tv1, tv2; -#define total_put 50000 -#define total_running_loop 50 -int nthreads = 4; -int one_thread = 1; -int nthreads_exited = 0; -lfqueue_t *myq; - - - -void* worker_c_must(void *arg) { - int i = 0; - int *int_data; - int total_loop = total_put * (*(int*)arg); - while (i++ < total_loop) { - /*Dequeue*/ - int_data = lfqueue_deq_must(myq); - // printf("%d\n", *int_data); - - free(int_data); - } - __sync_add_and_fetch(&nthreads_exited, 1); - return 0; -} - -void* worker_single_c_must(void *arg) { - int i = 0; - int *int_data; - int total_loop = total_put * (*(int*)arg); - while (i++ < total_loop) { - /*Dequeue*/ - int_data = lfqueue_single_deq_must(myq); - // printf("%d\n", *int_data); - - free(int_data); - } - __sync_add_and_fetch(&nthreads_exited, 1); - return 0; -} - -void* worker_sc_must(void *arg) -{ - int i = 0; - int *int_data; - while (i < total_put) { - int_data = (int*)malloc(sizeof(int)); - assert(int_data != NULL); - *int_data = i++; - /*Enqueue*/ - while (lfqueue_enq(myq, int_data)) { - printf("ENQ FULL?\n"); - } - - /*Dequeue*/ - int_data = lfqueue_deq_must(myq); - // printf("%d\n", *int_data); - free(int_data); - } - __sync_add_and_fetch(&nthreads_exited, 1); - return 0; -} - -void* worker_c(void *arg) { - int i = 0; - int *int_data; - int total_loop = total_put * (*(int*)arg); - while (i++ < total_loop) { - /*Dequeue*/ - while ((int_data = lfqueue_deq(myq)) == NULL) { - lfqueue_sleep(1); - } - // printf("%d\n", *int_data); - - free(int_data); - } - __sync_add_and_fetch(&nthreads_exited, 1); - return 0; -} - -void* worker_single_c(void *arg) { - int i = 0; - int *int_data; - int total_loop = total_put * (*(int*)arg); - while (i++ < total_loop) { - /*Dequeue*/ - while ((int_data = lfqueue_single_deq(myq)) == NULL) { - lfqueue_sleep(1); - } - // printf("%d\n", *int_data); - - free(int_data); - } - __sync_add_and_fetch(&nthreads_exited, 1); - return 0; -} - -/** Worker Keep Sending at the same time, do not try instensively **/ -void* worker_s(void *arg) -{ - int i = 0, *int_data; - int total_loop = total_put * (*(int*)arg); - while (i++ < total_loop) { - int_data = (int*)malloc(sizeof(int)); - assert(int_data != NULL); - *int_data = i; - /*Enqueue*/ - - while (lfqueue_enq(myq, int_data)) { - // printf("ENQ FULL?\n"); - } - } - // __sync_add_and_fetch(&nthreads_exited, 1); - return 0; -} - -/** Worker Send And Consume at the same time **/ -void* worker_sc(void *arg) -{ - int i = 0; - int *int_data; - while (i < total_put) { - int_data = (int*)malloc(sizeof(int)); - assert(int_data != NULL); - *int_data = i++; - /*Enqueue*/ - while (lfqueue_enq(myq, int_data)) { - printf("ENQ FULL?\n"); - } - - /*Dequeue*/ - while ((int_data = lfqueue_deq(myq)) == NULL) { - lfqueue_sleep(1); - } - // printf("%d\n", *int_data); - free(int_data); - } - __sync_add_and_fetch(&nthreads_exited, 1); - return 0; -} - -#define join_threads \ -for (i = 0; i < nthreads; i++) {\ -pthread_join(threads[i], NULL); \ -} - -#define detach_thread_and_loop \ -for (i = 0; i < nthreads; i++)\ -pthread_detach(threads[i]);\ -while ( nthreads_exited < nthreads ) \ - lfqueue_sleep(10);\ -if(lfqueue_size(myq) != 0){\ -lfqueue_sleep(10);\ -} - -void multi_enq_deq(pthread_t *threads) { - printf("-----------%s---------------\n", "multi_enq_deq"); - int i; - for (i = 0; i < nthreads; i++) { - pthread_create(threads + i, NULL, worker_sc, NULL); - } - - join_threads; - // detach_thread_and_loop; -} - -void one_deq_and_multi_enq(pthread_t *threads) { - printf("-----------%s---------------\n", "one_deq_and_multi_enq"); - int i; - for (i = 0; i < nthreads; i++) - pthread_create(threads + i, NULL, worker_s, &one_thread); - - worker_single_c(&nthreads); - - join_threads; - // detach_thread_and_loop; -} - -void one_enq_and_multi_deq(pthread_t *threads) { - printf("-----------%s---------------\n", "one_enq_and_multi_deq"); - int i; - for (i = 0; i < nthreads; i++) - pthread_create(threads + i, NULL, worker_c, &one_thread); - - worker_s(&nthreads); - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" - detach_thread_and_loop; -#pragma GCC diagnostic pop - -} - - -void one_deq_must_and_multi_enq(pthread_t *threads) { - printf("-----------%s---------------\n", "one_deq_must_and_multi_enq"); - int i; - for (i = 0; i < nthreads; i++) - pthread_create(threads + i, NULL, worker_s, &one_thread); - - worker_single_c_must(&nthreads); - - join_threads; - // detach_thread_and_loop; -} - -void one_enq_and_multi_deq_must(pthread_t *threads) { - printf("-----------%s---------------\n", "one_enq_and_multi_deq_must"); - int i; - for (i = 0; i < nthreads; i++) - pthread_create(threads + i, NULL, worker_c_must, &one_thread); - - worker_s(&nthreads); - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" - detach_thread_and_loop; -#pragma GCC diagnostic pop - -} - -void multi_enq_deq_must(pthread_t *threads) { - printf("-----------%s---------------\n", "multi_enq_deq_must"); - int i; - for (i = 0; i < nthreads; i++) { - pthread_create(threads + i, NULL, worker_sc_must, NULL); - } - - join_threads; - // detach_thread_and_loop; -} - -void running_test(test_function testfn) { - int n; - for (n = 0; n < total_running_loop; n++) { - printf("Current running at =%d, ", n); - nthreads_exited = 0; - /* Spawn threads. */ - pthread_t threads[nthreads]; - printf("Using %d thread%s.\n", nthreads, nthreads == 1 ? "" : "s"); - printf("Total requests %d \n", total_put); - gettimeofday(&tv1, NULL); - - testfn(threads); - // one_enq_and_multi_deq(threads); - - //one_deq_and_multi_enq(threads); - // multi_enq_deq(threads); - // worker_s(&ri); - // worker_c(&ri); - - gettimeofday(&tv2, NULL); - printf ("Total time = %f seconds\n", - (double) (tv2.tv_usec - tv1.tv_usec) / 1000000 + - (double) (tv2.tv_sec - tv1.tv_sec)); - - lfqueue_sleep(10); - assert ( 0 == lfqueue_size(myq) && "Error, all queue should be consumed but not"); - } -} - -int main(void) { - myq = malloc(sizeof (lfqueue_t)); - if (lfqueue_init(myq) == -1) - return -1; - - running_test(one_enq_and_multi_deq); - running_test(one_enq_and_multi_deq_must); - - running_test(one_deq_and_multi_enq); - running_test(one_deq_must_and_multi_enq); - - running_test(multi_enq_deq); - running_test(multi_enq_deq_must); - - - lfqueue_destroy(myq); - // sleep(3); - free(myq); - - printf("Test Pass!\n"); - - return 0; -} - diff --git a/example_wins.c b/example_wins.c deleted file mode 100644 index 731ff30..0000000 --- a/example_wins.c +++ /dev/null @@ -1,133 +0,0 @@ - - -#include -#include -#include -#include -#include -#include -#include "lfqueue.h" - -#ifndef LFQ_WINDOWS -#error This is Windows only code -#endif - -#define VC_EXTRALEAN -#define WIN32_LEAN_AND_MEAN -#include -#include /* _beginthread, _endthread */ - -/*----------------------------------------------------------------------------------------------*/ -/* - * Structure used in select() call, taken from the BSD file sys/time.h. - */ -struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* and microseconds */ -}; - -struct timeval tv1, tv2; - -lfqueue_t the_queue; - -#define MAX_THREADS 8 -#define total_put 50000 -/*----------------------------------------------------------------------------------------------*/ -unsigned __stdcall worker(void *); -/*----------------------------------------------------------------------------------------------*/ -unsigned __stdcall worker(void *arg) -{ - int i = 0; - int *int_data; - while (i < total_put) { - int_data = (int*)malloc(sizeof(int)); - assert(int_data != NULL); - *int_data = i++; - /*Enqueue*/ - - while (lfqueue_enq(&the_queue, int_data)) { - printf("ENQ FULL?\n"); - } - - /*Dequeue*/ - while ((int_data = lfqueue_deq(&the_queue)) == NULL) { - // usleep(1000); - printf("DEQ EMPTY?\n"); - } - free(int_data); - } - return 0; -} - -/*----------------------------------------------------------------------------------------------*/ -#define JOIN_ALL_THREADS \ -for (i = 0; i < MAX_THREADS; i++)\ -WaitForSingleObject(threads[i], INFINITE) - -/*----------------------------------------------------------------------------------------------*/ -/* -#define detach_thread_and_loop \ -for (i = 0; i < MAX_THREADS; i++)\ -pthread_detach(threads[i]);\ -while (1) {\ -sleep(2);\ -printf("current size= %zu\n", lfqueue_size(&the_queue) );\ -}*/ - -/*----------------------------------------------------------------------------------------------*/ -int main(int argc, char ** argv) -{ - //const static int MAX_THREADS = 2;//sysconf(_SC_NPROCESSORS_ONLN); // Linux - - static const int LOOP_SIZE_ = 100; - int i, n; - - if (lfqueue_init(&the_queue) == -1) { - perror("LF QUEUE initialization has failed."); - return EXIT_FAILURE ; - } - - printf("\n\n"); - clock_t total_start = clock(); - - for (n = 0; n < LOOP_SIZE_; n++) { - - /* Spawn the threads. */ - HANDLE threads[MAX_THREADS] = {0}; - - clock_t start = clock(); - /* inside each loop begin workers on separate threads */ - for (i = 0; i < MAX_THREADS; i++) - { - unsigned udpthreadid = 0; - threads[i] = (HANDLE)_beginthreadex(NULL, 0, worker, NULL, 0, &udpthreadid); - } - - JOIN_ALL_THREADS; - // detach_thread_and_loop; - - printf("\rFinished loop [%3d] of [%3d], Total time to begin and join [%3d] threads was: [%3.3f] seconds ", - n, LOOP_SIZE_, MAX_THREADS, ((float)(clock() - start) / CLOCKS_PER_SEC)); - - if (0 != lfqueue_size(&the_queue)) - { - perror("Error, all queues should be consumed but they are not"); - return EXIT_FAILURE; - } - - } /* main loop */ - - lfqueue_destroy(&the_queue); - - printf("\n\n"); - printf("Total test time: %3.3f minutes", ((float)(clock() - total_start) / CLOCKS_PER_SEC) / 60.0 ); - printf("\n\n"); - - system("@echo."); - system("@echo --- Test has passed --- "); - system("@echo."); - system("@pause."); - - return EXIT_SUCCESS; -} - From a3c03e5e232b3fa04ca70c0c0137b751010f9355 Mon Sep 17 00:00:00 2001 From: dbjdbj Date: Thu, 30 Jan 2020 17:44:47 +0100 Subject: [PATCH 13/32] simpler and better samples. Instructional common.h --- .vscode/launch.json | 2 +- lfqueue.c | 225 +++++++++++------- sample/common.h | 142 +++++++++++ sample/cpp/build.cmd | 6 +- sample/cpp/cppsample.cpp | 140 +++++++++++ sample/cpp/cppsample_dbg.exe | Bin 0 -> 770048 bytes sample/cpp/dbj_coroutines.cpp | 54 ----- sample/win/build.cmd | 7 +- .../win/{example_wins.c => windows_sample.c} | 95 ++------ sample/win/windows_sample.exe | Bin 0 -> 129024 bytes sample/win/windows_sample_dbg.exe | Bin 0 -> 448000 bytes 11 files changed, 447 insertions(+), 224 deletions(-) create mode 100644 sample/common.h create mode 100644 sample/cpp/cppsample.cpp create mode 100644 sample/cpp/cppsample_dbg.exe delete mode 100644 sample/cpp/dbj_coroutines.cpp rename sample/win/{example_wins.c => windows_sample.c} (57%) create mode 100644 sample/win/windows_sample.exe create mode 100644 sample/win/windows_sample_dbg.exe diff --git a/.vscode/launch.json b/.vscode/launch.json index e510d02..0d57bbe 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -16,7 +16,7 @@ "name": "cpp Launch", "type": "cppvsdbg", "request": "launch", - "program": "${workspaceFolder}/sample/cpp/dbj_coroutines_dbg.exe", + "program": "${workspaceFolder}/sample/cpp/cppsample_dbg.exe", "args": [], "stopAtEntry": true, "cwd": "${workspaceFolder}/sample/cpp", diff --git a/lfqueue.c b/lfqueue.c index e9595e9..b9260c4 100644 --- a/lfqueue.c +++ b/lfqueue.c @@ -27,6 +27,8 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ + +#include // DBJ ADDED #include #include #include @@ -52,13 +54,14 @@ #include #ifdef _WIN64 -inline BOOL __SYNC_BOOL_CAS(LONG64 volatile *dest, LONG64 input, LONG64 comparand) { +inline BOOL __SYNC_BOOL_CAS(LONG64 volatile *dest, LONG64 input, LONG64 comparand) +{ return InterlockedCompareExchangeNoFence64(dest, input, comparand) == comparand; } #define __LFQ_VAL_COMPARE_AND_SWAP(dest, comparand, input) \ - InterlockedCompareExchangeNoFence64((LONG64 volatile *)dest, (LONG64)input, (LONG64)comparand) + InterlockedCompareExchangeNoFence64((LONG64 volatile *)dest, (LONG64)input, (LONG64)comparand) #define __LFQ_BOOL_COMPARE_AND_SWAP(dest, comparand, input) \ - __SYNC_BOOL_CAS((LONG64 volatile *)dest, (LONG64)input, (LONG64)comparand) + __SYNC_BOOL_CAS((LONG64 volatile *)dest, (LONG64)input, (LONG64)comparand) #define __LFQ_FETCH_AND_ADD InterlockedExchangeAddNoFence64 #define __LFQ_ADD_AND_FETCH InterlockedAddNoFence64 #define __LFQ_SYNC_MEMORY MemoryBarrier @@ -68,13 +71,14 @@ inline BOOL __SYNC_BOOL_CAS(LONG64 volatile *dest, LONG64 input, LONG64 comparan #ifndef asm #define asm __asm #endif -inline BOOL __SYNC_BOOL_CAS(LONG volatile *dest, LONG input, LONG comparand) { +inline BOOL __SYNC_BOOL_CAS(LONG volatile *dest, LONG input, LONG comparand) +{ return InterlockedCompareExchangeNoFence(dest, input, comparand) == comparand; } #define __LFQ_VAL_COMPARE_AND_SWAP(dest, comparand, input) \ - InterlockedCompareExchangeNoFence((LONG volatile *)dest, (LONG)input, (LONG)comparand) + InterlockedCompareExchangeNoFence((LONG volatile *)dest, (LONG)input, (LONG)comparand) #define __LFQ_BOOL_COMPARE_AND_SWAP(dest, comparand, input) \ - __SYNC_BOOL_CAS((LONG volatile *)dest, (LONG)input, (LONG)comparand) + __SYNC_BOOL_CAS((LONG volatile *)dest, (LONG)input, (LONG)comparand) #define __LFQ_FETCH_AND_ADD InterlockedExchangeAddNoFence #define __LFQ_ADD_AND_FETCH InterlockedAddNoFence #define __LFQ_SYNC_MEMORY() asm mfence @@ -94,9 +98,9 @@ inline BOOL __SYNC_BOOL_CAS(LONG volatile *dest, LONG input, LONG comparand) { #if defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ #define lfq_time_t long #define lfq_get_curr_time(_time_sec) \ -struct timeval _time_; \ -gettimeofday(&_time_, NULL); \ -*_time_sec = _time_.tv_sec + struct timeval _time_; \ + gettimeofday(&_time_, NULL); \ + *_time_sec = _time_.tv_sec #define lfq_diff_time(_etime_, _stime_) _etime_ - _stime_ #else #define lfq_time_t time_t @@ -106,8 +110,9 @@ gettimeofday(&_time_, NULL); \ /*----------------------------------------------------------------------------------------------*/ -struct lfqueue_cas_node_s { - void * value; +struct lfqueue_cas_node_s +{ + void *value; struct lfqueue_cas_node_s *next, *nextfree; lfq_time_t _deactivate_tm; }; @@ -115,29 +120,29 @@ struct lfqueue_cas_node_s { /*----------------------------------------------------------------------------------------------*/ //static lfqueue_cas_node_t* __lfq_assigned(lfqueue_t *); -static void __lfq_recycle_free(lfqueue_t *, lfqueue_cas_node_t*); +static void __lfq_recycle_free(lfqueue_t *, lfqueue_cas_node_t *); static void __lfq_check_free(lfqueue_t *); static void *_dequeue(lfqueue_t *); static void *_single_dequeue(lfqueue_t *); -static int _enqueue(lfqueue_t *, void* ); +static int _enqueue(lfqueue_t *, void *); /*----------------------------------------------------------------------------------------------*/ static const size_t LFQ_MAX_SINGLE_ALLOCATION = 0xFFFF; -static inline void* _lfqueue_malloc(void* pl, size_t sz) +static inline void *_lfqueue_malloc(void *pl, size_t sz) { /*return malloc(sz);*/ #ifdef NDEBUG - return calloc(1,sz); + return calloc(1, sz); #else if (sz >= LFQ_MAX_SINGLE_ALLOCATION) { errno = ENOMEM; - perror( __FILE__ " -- LFQ max single heap allocation can not be larger than 64KB "); - exit( EXIT_FAILURE ); + perror(__FILE__ " -- LFQ max single heap allocation can not be larger than 64KB "); + exit(EXIT_FAILURE); } - void * p = calloc(1, sz); - if (! p ) + void *p = calloc(1, sz); + if (!p) { perror(__FILE__ " -- LFQ heap allocation failed "); exit(EXIT_FAILURE); @@ -145,32 +150,43 @@ static inline void* _lfqueue_malloc(void* pl, size_t sz) return p; #endif /* NDEBUG */ } -static inline void _lfqueue_free(void* pl, void* ptr) { +static inline void _lfqueue_free(void *pl, void *ptr) +{ free(ptr); } static void * -_dequeue(lfqueue_t *lfqueue) { +_dequeue(lfqueue_t *lfqueue) +{ lfqueue_cas_node_t *head, *next; void *val; - for (;;) { + for (;;) + { head = lfqueue->head; - if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->head, head, head)) { + if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->head, head, head)) + { next = head->next; - if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->tail, head, head)) { - if (next == NULL) { + if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->tail, head, head)) + { + if (next == NULL) + { val = NULL; goto _done; } } - else { - if (next) { + else + { + if (next) + { val = next->value; - if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->head, head, next)) { + if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->head, head, next)) + { break; } - } else { + } + else + { val = NULL; goto _done; } @@ -187,27 +203,38 @@ _dequeue(lfqueue_t *lfqueue) { } static void * -_single_dequeue(lfqueue_t *lfqueue) { - lfqueue_cas_node_t *head, *next; - void *val; +_single_dequeue(lfqueue_t *lfqueue) +{ + lfqueue_cas_node_t *head = 0, *next = 0; + void *val = 0; - for (;;) { + for (;;) + { head = lfqueue->head; - if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->head, head, head)) { + assert(head); // DBJ ADDED + if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->head, head, head)) + { next = head->next; - if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->tail, head, head)) { - if (next == NULL) { + if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->tail, head, head)) + { + if (next == NULL) + { return NULL; } } - else { - if (next) { + else + { + if (next) + { val = next->value; - if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->head, head, next)) { + if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->head, head, next)) + { lfqueue->_free(lfqueue->pl, head); break; } - } else { + } + else + { return NULL; } } @@ -217,20 +244,24 @@ _single_dequeue(lfqueue_t *lfqueue) { } static int -_enqueue(lfqueue_t *lfqueue, void* value) { +_enqueue(lfqueue_t *lfqueue, void *value) +{ lfqueue_cas_node_t *tail, *node; - node = (lfqueue_cas_node_t*) lfqueue->_malloc(lfqueue->pl, sizeof(lfqueue_cas_node_t)); - if (node == NULL) { + node = (lfqueue_cas_node_t *)lfqueue->_malloc(lfqueue->pl, sizeof(lfqueue_cas_node_t)); + if (node == NULL) + { perror("malloc"); return errno; } node->value = value; node->next = NULL; node->nextfree = NULL; - for (;;) { + for (;;) + { __LFQ_SYNC_MEMORY(); tail = lfqueue->tail; - if (__LFQ_BOOL_COMPARE_AND_SWAP(&tail->next, NULL, node)) { + if (__LFQ_BOOL_COMPARE_AND_SWAP(&tail->next, NULL, node)) + { // compulsory swap as tail->next is no NULL anymore, it has fenced on other thread __LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->tail, tail, node); __lfq_check_free(lfqueue); @@ -243,11 +274,13 @@ _enqueue(lfqueue_t *lfqueue, void* value) { } static void -__lfq_recycle_free(lfqueue_t *lfqueue, lfqueue_cas_node_t* freenode) { +__lfq_recycle_free(lfqueue_t *lfqueue, lfqueue_cas_node_t *freenode) +{ lfqueue_cas_node_t *freed; - do { + do + { freed = lfqueue->move_free; - } while (!__LFQ_BOOL_COMPARE_AND_SWAP(&freed->nextfree, NULL, freenode) ); + } while (!__LFQ_BOOL_COMPARE_AND_SWAP(&freed->nextfree, NULL, freenode)); lfq_get_curr_time(&freenode->_deactivate_tm); @@ -255,18 +288,24 @@ __lfq_recycle_free(lfqueue_t *lfqueue, lfqueue_cas_node_t* freenode) { } static void -__lfq_check_free(lfqueue_t *lfqueue) { +__lfq_check_free(lfqueue_t *lfqueue) +{ lfq_time_t curr_time; - if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->in_free_mode, 0, 1)) { + if (__LFQ_BOOL_COMPARE_AND_SWAP(&lfqueue->in_free_mode, 0, 1)) + { lfq_get_curr_time(&curr_time); lfqueue_cas_node_t *rtfree = lfqueue->root_free, *nextfree; - while ( rtfree && (rtfree != lfqueue->move_free) ) { + while (rtfree && (rtfree != lfqueue->move_free)) + { nextfree = rtfree->nextfree; - if ( lfq_diff_time(curr_time, rtfree->_deactivate_tm) > 2) { + if (lfq_diff_time(curr_time, rtfree->_deactivate_tm) > 2) + { // printf("%p\n", rtfree); lfqueue->_free(lfqueue->pl, rtfree); rtfree = nextfree; - } else { + } + else + { break; } } @@ -276,20 +315,21 @@ __lfq_check_free(lfqueue_t *lfqueue) { __LFQ_SYNC_MEMORY(); } -int -lfqueue_init(lfqueue_t *lfqueue) { +int lfqueue_init(lfqueue_t *lfqueue) +{ return lfqueue_init_mf(lfqueue, NULL, _lfqueue_malloc, _lfqueue_free); } -int -lfqueue_init_mf(lfqueue_t *lfqueue, void* pl, lfqueue_malloc_fn lfqueue_malloc, lfqueue_free_fn lfqueue_free) { +int lfqueue_init_mf(lfqueue_t *lfqueue, void *pl, lfqueue_malloc_fn lfqueue_malloc, lfqueue_free_fn lfqueue_free) +{ lfqueue->_malloc = lfqueue_malloc; lfqueue->_free = lfqueue_free; lfqueue->pl = pl; lfqueue_cas_node_t *base = lfqueue_malloc(pl, sizeof(lfqueue_cas_node_t)); lfqueue_cas_node_t *freebase = lfqueue_malloc(pl, sizeof(lfqueue_cas_node_t)); - if (base == NULL || freebase == NULL) { + if (base == NULL || freebase == NULL) + { perror("malloc"); return errno; } @@ -303,7 +343,7 @@ lfqueue_init_mf(lfqueue_t *lfqueue, void* pl, lfqueue_malloc_fn lfqueue_malloc, freebase->nextfree = NULL; freebase->_deactivate_tm = 0; - lfqueue->head = lfqueue->tail = base; // Not yet to be free for first node only + lfqueue->head = lfqueue->tail = base; // Not yet to be free for first node only lfqueue->root_free = lfqueue->move_free = freebase; // Not yet to be free for first node only lfqueue->size = 0; lfqueue->in_free_mode = 0; @@ -311,20 +351,23 @@ lfqueue_init_mf(lfqueue_t *lfqueue, void* pl, lfqueue_malloc_fn lfqueue_malloc, return 0; } -void -lfqueue_destroy(lfqueue_t *lfqueue) { - void* p; - while ((p = lfqueue_deq(lfqueue))) { +void lfqueue_destroy(lfqueue_t *lfqueue) +{ + void *p; + while ((p = lfqueue_deq(lfqueue))) + { lfqueue->_free(lfqueue->pl, p); } // Clear the recycle chain nodes lfqueue_cas_node_t *rtfree = lfqueue->root_free, *nextfree; - while (rtfree && (rtfree != lfqueue->move_free) ) { + while (rtfree && (rtfree != lfqueue->move_free)) + { nextfree = rtfree->nextfree; lfqueue->_free(lfqueue->pl, rtfree); rtfree = nextfree; } - if (rtfree) { + if (rtfree) + { lfqueue->_free(lfqueue->pl, rtfree); } @@ -333,21 +376,23 @@ lfqueue_destroy(lfqueue_t *lfqueue) { lfqueue->size = 0; } -int -lfqueue_enq(lfqueue_t *lfqueue, void *value) { - if (_enqueue(lfqueue, value)) { +int lfqueue_enq(lfqueue_t *lfqueue, void *value) +{ + if (_enqueue(lfqueue, value)) + { return -1; } __LFQ_ADD_AND_FETCH(&lfqueue->size, 1); return 0; } -void* -lfqueue_deq(lfqueue_t *lfqueue) { +void * +lfqueue_deq(lfqueue_t *lfqueue) +{ void *v; - if (//__LFQ_ADD_AND_FETCH(&lfqueue->size, 0) && - (v = _dequeue(lfqueue)) - ) { + if ( //__LFQ_ADD_AND_FETCH(&lfqueue->size, 0) && + (v = _dequeue(lfqueue))) + { __LFQ_FETCH_AND_ADD(&lfqueue->size, -1); return v; @@ -355,10 +400,12 @@ lfqueue_deq(lfqueue_t *lfqueue) { return NULL; } -void* -lfqueue_deq_must(lfqueue_t *lfqueue) { +void * +lfqueue_deq_must(lfqueue_t *lfqueue) +{ void *v; - while ( !(v = _dequeue(lfqueue)) ) { + while (!(v = _dequeue(lfqueue))) + { // Rest the thread for other thread, to avoid keep looping force lfqueue_sleep(1); } @@ -367,12 +414,13 @@ lfqueue_deq_must(lfqueue_t *lfqueue) { } /**This is only applicable when only single thread consume only**/ -void* -lfqueue_single_deq(lfqueue_t *lfqueue) { +void * +lfqueue_single_deq(lfqueue_t *lfqueue) +{ void *v; - if (//__LFQ_ADD_AND_FETCH(&lfqueue->size, 0) && - (v = _single_dequeue(lfqueue)) - ) { + if ( //__LFQ_ADD_AND_FETCH(&lfqueue->size, 0) && + (v = _single_dequeue(lfqueue))) + { __LFQ_FETCH_AND_ADD(&lfqueue->size, -1); return v; @@ -381,10 +429,12 @@ lfqueue_single_deq(lfqueue_t *lfqueue) { } /**This is only applicable when only single thread consume only**/ -void* -lfqueue_single_deq_must(lfqueue_t *lfqueue) { +void * +lfqueue_single_deq_must(lfqueue_t *lfqueue) +{ void *v; - while ( !(v = _single_dequeue(lfqueue)) ) { + while (!(v = _single_dequeue(lfqueue))) + { // Rest the thread for other thread, to avoid keep looping force lfqueue_sleep(1); } @@ -393,12 +443,13 @@ lfqueue_single_deq_must(lfqueue_t *lfqueue) { } size_t -lfqueue_size(lfqueue_t *lfqueue) { +lfqueue_size(lfqueue_t *lfqueue) +{ return __LFQ_ADD_AND_FETCH(&lfqueue->size, 0); } -void -lfqueue_sleep(unsigned int milisec) { +void lfqueue_sleep(unsigned int milisec) +{ #if defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wimplicit-function-declaration" diff --git a/sample/common.h b/sample/common.h new file mode 100644 index 0000000..c26bced --- /dev/null +++ b/sample/common.h @@ -0,0 +1,142 @@ +#pragma once +/* +common to all samples +*/ + +#include +#include +#include +#include +#define _WINSOCK_DEPRECATED_NO_WARNINGS +#define STRICT 1 +#define WIN32_LEAN_AND_MEAN +#include // CRITICAL_SECTION + +#ifdef __cplusplus +namespace common +{ +extern "C" +{ +#endif + + /// -------------------------------------------------------------------------------------------- + /// we need to make coomon function work in presence of multiple threads + typedef struct + { + bool initalized; + CRITICAL_SECTION crit_sect; + } synchro_type; + + void exit_common(void); + + inline synchro_type *common_initor() + { + static synchro_type synchro_ = {false}; + if (!synchro_.initalized) + { + InitializeCriticalSection(&synchro_.crit_sect); + synchro_.initalized = true; + atexit(exit_common); + } + + return &synchro_; + } + + void exit_common(void) + { + synchro_type crit_ = *common_initor(); + + if (crit_.initalized) + { + DeleteCriticalSection(&crit_.crit_sect); + crit_.initalized = false; + } + } + + void synchro_enter() { EnterCriticalSection(&common_initor()->crit_sect); } + void synchro_leave() { LeaveCriticalSection(&common_initor()->crit_sect); } + + /// origin is a "strong type" (c) 2019 dbj@dbj.org + /// + /// void fun(origin); + /// + /// is infinitely better than + /// + /// void fun ( char * ); + /// + /// calling is even better + /// + /// fun((origin){"Producer"}); + /// + /// almost like named argument, but not, because + /// the name required is a type + /// thus type and value cleraly stated in a call + /// better than C++ variant: + /// + /// C++ + /// fun({"Producer"}); // what is the type passed? + /// + typedef struct origin_tag + { + const char *val; + } origin; + /// -------------------------------------------------------------------------------------------- + /// one can pass objects on stack to threads, but stack is shared by default between threads + /// so for clear confusion free thread to thread messaging use heap + + /// we always `name` the threads by sending them this through + /// _beginthreadex() call, as the fourth argument + inline char *make_name_(unsigned id_, origin origin_) + { + synchro_enter(); + assert(origin_.val); + char *retval = (char *)calloc(0xF, sizeof(char)); + assert(retval); + int count = snprintf(retval, 0xF, "%s: %3d", origin_.val, id_); + assert(!(count < 0)); + synchro_leave(); + return retval; + } + inline void free_name_(char *pn_) + { + synchro_enter(); + free(pn_); + pn_ = 0; + synchro_leave(); + } + /// we can not tell if vp_ is coming from a heap + /// or from a stack + inline char *print_name_(void *vp_, origin origin_) + { + synchro_enter(); + assert(vp_); + assert(origin_.val); + char *pn_ = (char *)vp_; + printf("\n%16s [%16s] has started", origin_.val, pn_); + fflush(0); + synchro_leave(); + return pn_; + } + inline char *make_message_(char *producer_name_) + { + synchro_enter(); + assert(producer_name_); + char *retval = (char *)calloc(0xFF, sizeof(char)); + assert(retval); + int count = snprintf(retval, 0xFF, "Message from: %s", producer_name_); + assert(!(count < 0)); + synchro_leave(); + return retval; + } + inline void free_message_(char *pn_) + { + synchro_enter(); + free(pn_); + pn_ = 0; + synchro_leave(); + } + +#ifdef __cplusplus +} // extern "C" +} // common +#endif diff --git a/sample/cpp/build.cmd b/sample/cpp/build.cmd index bc7bb5b..667a9b1 100644 --- a/sample/cpp/build.cmd +++ b/sample/cpp/build.cmd @@ -1,5 +1,5 @@ -@rem of course start from msvc developer cmd -@rem debug build -- /Zi +@rem of course Windows VCode has to start from msvc developer cmd +@rem debug build on/off -- include/exclude argument -- /Zi -cl /std:c++17 /await /EHsc /Zi /Fe: dbj_coroutines_dbg.exe dbj_coroutines.cpp \ No newline at end of file +cl /std:c++17 /await /EHsc /Zi /Fe: cppsample_dbg.exe cppsample.cpp ../../lfqueue.c \ No newline at end of file diff --git a/sample/cpp/cppsample.cpp b/sample/cpp/cppsample.cpp new file mode 100644 index 0000000..1885a1f --- /dev/null +++ b/sample/cpp/cppsample.cpp @@ -0,0 +1,140 @@ + +/// MSVC, C++17 +/// one consumer, 1..N producers + +#include +#include +#include +#include "../../lfqueue.h" // namespace lf_queue +#include "../common.h" // namespace common + +using namespace std; + +/// Prototypes +/// __declspec(dllimport) +extern "C" __declspec(dllimport) int __stdcall CloseHandle(void *hObject); + +/// #pragma comment(lib, "Kernel32.lib") +///-------------------------------------------------- +static lf_queue::lfqueue_t the_queue; + +using threads_sequence = vector; + +int main(int, char **) +{ + using namespace common; + using namespace ::lf_queue; + unsigned producer_threads_count = 2U; + + if (lfqueue_init(&the_queue) == -1) + { + perror("LF QUEUE initialization has failed."); + return EXIT_FAILURE; + } + threads_sequence producers{producer_threads_count}; + do + { + producers.push_back( + thread([producer_threads_count] { + /* using C API provokes cludges */ + char buf[3] = {0}; + snprintf(buf, 3, "%d", producer_threads_count); + /* 1: returns first arg cast to char*, does *not* allocate anything */ + char *name_ = print_name_((void *)buf, {"Producer"}); + printf(" from thread %d\n", (int)GetCurrentThreadId()); + printf("\nProducer [%s] sleeping for 5 seconds...", name_); + using namespace std::chrono_literals; + this_thread::sleep_for(5s); + + /* 2: make the message to be sent */ + char *message_ = make_message_(name_); + /* 3: Enqueue, consumer is responsible freeing the message */ + while (lfqueue_enq(&the_queue, message_)) + { + lfqueue_sleep(1); // sleep if Q is full + } + return 0; + }) // thread ctor + ); // push_back + } while (--producer_threads_count); + /// a single consumer + thread consumer{ + [&] { + const char *consumer_id_ = "99"; + /* using C API provokes cludges */ + /* 1: returns arg cast to char*, does not allocate anything */ + char *name_ = print_name_((void *)consumer_id_, {"Consumer"}); + printf(" from thread %d\n", (int)GetCurrentThreadId()); + printf("\nConsumer [%s] sleeping for 5 seconds...", name_); + using namespace std::chrono_literals; + this_thread::sleep_for(5s); + // we will loop forever if this is required + // while (true) + // { + /*Dequeue -- This call is only applicable when a single thread consumes messages */ + char *message_ = (char *)lfqueue_single_deq_must(&the_queue); + + if (message_) + { + printf("\nConsumer has received: [%s]", message_); + /* made on the heap by producer */ + free_name_(message_); + } + else + { + printf("\nConsumer should not be here.."); + } + fflush(0); + this_thread::sleep_for(1ns); // 1 nano seconds + // } + return 0; + }}; // consumer ctor + + /// IF we want consumer thread to be 'detached' + /// thus we will keep it's handle so we can close + /// it in a controlled manner later on + /// std::thread::native_handle_type + + auto consumer_handle = consumer.native_handle(); + /* + consumer.detach(); + After this "just leave it" .. do not join + or close hand!le + */ + + printf("\nMain thread sleeping for 5 seconds..."); + using namespace std::chrono_literals; + this_thread::sleep_for(5s); + + /// join and stop the producers + for (auto &thr_ : producers) + { + auto handle_ = thr_.native_handle(); + while (!thr_.joinable()) + { + this_thread::sleep_for(1ns); // 1 nano sec + } + thr_.join(); + CloseHandle(handle_); + } + + /// will throw the exception if not joinable + while (!consumer.joinable()) + { + this_thread::sleep_for(1ns); // 1 nano sec + } + consumer.join(); + /// this shuts down the consumer thread + CloseHandle(consumer_handle); + + fflush(0); + while (0 != lfqueue_size(&the_queue)) + { + // perror("All queues should be consumed but they are not"); + lfqueue_sleep(1); + // return EXIT_FAILURE; + } + lfqueue_destroy(&the_queue); + fflush(0); + return EXIT_SUCCESS; +} // main \ No newline at end of file diff --git a/sample/cpp/cppsample_dbg.exe b/sample/cpp/cppsample_dbg.exe new file mode 100644 index 0000000000000000000000000000000000000000..45c3d945d0c82e7daed72cdd8651980cc2895fe8 GIT binary patch literal 770048 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
    SM!}*m1|s{m3rQrpq)*M=gG{<-7`*`5j& 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
    *#}sFOVg!IbWax>??4)Ku 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%0Dwp_dSD$s{@k!Bz~o5 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

    e;;GkGM@`~Q=xQ@YLn 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�YDmngka^sWo3oy7(! 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 literal 0 HcmV?d00001 diff --git a/sample/cpp/dbj_coroutines.cpp b/sample/cpp/dbj_coroutines.cpp deleted file mode 100644 index 8b6d2e2..0000000 --- a/sample/cpp/dbj_coroutines.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/// https://gist.github.com/yizhang82/28842f7dbae34b59fcd7b4d74b4a19d4 -#include -#include - -using namespace std; - -///------------------------------------------------------ -future async_add(int a, int b) -{ - auto fut = std::async([=]() { - int c = a + b; - return c; - }); - - return fut; -} -///------------------------------------------------------ -future async_fib(int n) -{ - if (n <= 2) - co_return 1; - - int a = 1; - int b = 1; - - // iterate computing fib(n) - for (int i = 0; i < n - 2; ++i) - { - int c = co_await async_add(a, b); - a = b; - b = c; - } - - co_return b; -} - -///------------------------------------------------------ -future test_async_fib() -{ - for (int i = 1; i < 10; ++i) - { - int ret = co_await async_fib(i); - cout << "async_fib(" << i << ") returns " << ret << endl; - } -} - -///------------------------------------------------------ -int main() -{ - auto fut = test_async_fib(); - fut.wait(); - - return 0; -} diff --git a/sample/win/build.cmd b/sample/win/build.cmd index f9575ec..bef73b1 100644 --- a/sample/win/build.cmd +++ b/sample/win/build.cmd @@ -1,6 +1,9 @@ -@rem of course start from msvc developer cmd +@rem of course start the visual code from msvc developer cmd @rem debug build -- /Zi @rem /std:c++17 @rem /await -cl /EHsc /Zi /Fe: example_wins_dbg.exe example_wins.c ../../lfqueue.c + +@rem exe name has to match the one used in .vscode/launch.json + +cl /EHsc /Zi /Fe: windows_sample_dbg.exe windows_sample.c ../../lfqueue.c diff --git a/sample/win/example_wins.c b/sample/win/windows_sample.c similarity index 57% rename from sample/win/example_wins.c rename to sample/win/windows_sample.c index 25d21b9..2289896 100644 --- a/sample/win/example_wins.c +++ b/sample/win/windows_sample.c @@ -7,6 +7,7 @@ #include #include #include "../../lfqueue.h" +#include "../common.h" #ifndef LFQ_WINDOWS #error This is Windows only code @@ -22,77 +23,10 @@ static lfqueue_t the_queue; #define MAX_THREADS 42 static const int total_put = 50000; -/// origin is a "strong type" (c) 2019 dbj@dbj.org -/// -/// void fun(origin); -/// -/// is infinitely better than -/// -/// void fun ( char * ); -/// -/// calling is even better -/// -/// fun((origin){"Producer"}); -/// -/// almost like named argument, but not, because -/// the name required is a type -/// thus type and value cleraly stated in a call -/// better than C++ variant: -/// -/// C++ -/// fun({"Producer"}); // what is the type passed? -/// -typedef struct origin_tag -{ - const char *val; -} origin; -/// -------------------------------------------------------------------------------------------- -/// one can pass objects on stack to threads, but stack is shared by default between threads -/// so for clear confusion free messaging use heap - -char *make_name_(unsigned id_, origin origin_) -{ - assert(origin_.val); - char *retval = (char *)calloc(0xF, sizeof(char)); - assert(retval); - int count = snprintf(retval, 0xF, "%s: %3d", origin_.val, id_); - assert(!(count < 0)); - return retval; -} -void free_name_(char *pn_) -{ - free(pn_); - pn_ = 0; -} -char *print_name_(void *vp_, origin origin_) -{ - assert(vp_); - assert(origin_.val); - char *pn_ = (char *)vp_; - printf("\n%16s [%16s] has started", origin_.val, pn_); - fflush(0); - return pn_; -} -char *make_message_(char *producer_name_) -{ - assert(producer_name_); - char *retval = (char *)calloc(0xFF, sizeof(char)); - assert(retval); - int count = snprintf(retval, 0xFF, "Message from: %s", producer_name_); - assert(!(count < 0)); - return retval; -} -void free_message_(char *pn_) -{ - free(pn_); - pn_ = 0; -} - /// -------------------------------------------------------------------------------------------- unsigned __stdcall producer(void *); unsigned __stdcall producer(void *arg) { - // origin producer_ = {"Producer"}; /* print to terminal window */ char *name_ = print_name_(arg, (origin){""}); /* make the message to be sent */ @@ -102,7 +36,8 @@ unsigned __stdcall producer(void *arg) */ while (lfqueue_enq(&the_queue, message_)) { - perror("Q FULL for ?\n"); + // perror("Q FULL for ?\n"); + lfqueue_sleep(1); } free_name_(name_); lfqueue_sleep(1); @@ -141,8 +76,6 @@ unsigned __stdcall consumer(void *arg) /*----------------------------------------------------------------------------------------------*/ int main(int argc, char **argv) { - //const static int MAX_THREADS = 2;//sysconf(_SC_NPROCESSORS_ONLN); // Linux - static const int LOOP_SIZE_ = 1; if (lfqueue_init(&the_queue) == -1) @@ -157,16 +90,23 @@ int main(int argc, char **argv) /* the threads */ HANDLE threads[MAX_THREADS] = {0}; - unsigned consumer_thread_id = 0; + unsigned consumer_thread_idx_ = 0; - HANDLE consumer_thread = (HANDLE)_beginthreadex(NULL, 0, consumer, - make_name_(consumer_thread_id, (origin){"Consumer"}), CREATE_SUSPENDED, NULL); + HANDLE consumer_thread = (HANDLE)_beginthreadex( + NULL, 0, consumer, + /* thread data is the name we generate for it */ + make_name_(consumer_thread_idx_, (origin){"Consumer"}), + CREATE_SUSPENDED, NULL); /* begin producers, each on a separate thread */ - int i = 1; + int i = 0; do { - threads[i] = (HANDLE)_beginthreadex(NULL, 0, producer, make_name_(i, (origin){"Producer"}), 0, NULL); + threads[i] = (HANDLE)_beginthreadex( + NULL, 0, producer, + /* thread data is the name we generate for it */ + make_name_(i, (origin){"Producer"}), + 0, NULL); i++; } while (i < MAX_THREADS); @@ -174,12 +114,13 @@ int main(int argc, char **argv) ResumeThread(consumer_thread); /// wait 5 seconds for consumer WaitForSingleObject(consumer_thread, 1000 * 5 /* 5 seconds */); + /// shutdown consumer thread CloseHandle(consumer_thread); /// wait for producers WaitForMultipleObjects(MAX_THREADS, threads, TRUE, INFINITE); - // Close event handles + // Close producers threads for (int i = 0; i < MAX_THREADS; i++) CloseHandle(threads[i]); @@ -196,7 +137,7 @@ int main(int argc, char **argv) lfqueue_destroy(&the_queue); - printf("\nDone, hit any key you choose ... "); + printf("\nDone, hit any key you choose to hit today ... "); fflush(0); getch(); diff --git a/sample/win/windows_sample.exe b/sample/win/windows_sample.exe new file mode 100644 index 0000000000000000000000000000000000000000..acef1977bd7fed6ddbf78623568ea8f3b603d05e GIT binary patch literal 129024 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