From 113a9760a34d66076f5f5ea75aed91afd6472e9f Mon Sep 17 00:00:00 2001 From: Ivan Folgueira Bande Date: Mon, 19 Jan 2026 12:00:43 +0100 Subject: [PATCH] Revert "feat: thread pool (#40)" This reverts commit 8d33a7f7dafe37f482d09a8fb113869f78baf0b8. --- Makefile | 18 ++++++++--------- library/libsds.nim | 48 ++++++++++------------------------------------ 2 files changed, 19 insertions(+), 47 deletions(-) diff --git a/Makefile b/Makefile index 6f096ca..40cacc7 100644 --- a/Makefile +++ b/Makefile @@ -115,7 +115,7 @@ build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passC="-I$(ANDROID_ build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passL="-L$(ANDROID_TOOLCHAIN_DIR)/sysroot/usr/lib/$(ARCH_DIRNAME)/$(ANDROID_TARGET)" build-libsds-for-android-arch: CC=$(ANDROID_TOOLCHAIN_DIR)/bin/$(ANDROID_ARCH)$(ANDROID_TARGET)-clang \ - ARCH=$(ARCH) ABIDIR=$(ABIDIR) \ + CPU=$(CPU) ABIDIR=$(ABIDIR) \ ARCH_DIRNAME=$(ARCH_DIRNAME) \ ANDROID_ARCH=$(ANDROID_ARCH) \ ANDROID_TOOLCHAIN_DIR=$(ANDROID_TOOLCHAIN_DIR) \ @@ -123,37 +123,37 @@ build-libsds-for-android-arch: nim libsdsAndroid $(NIM_PARAMS) sds.nims libsds-android-arm64: ANDROID_ARCH=aarch64-linux-android -libsds-android-arm64: ARCH=arm64 +libsds-android-arm64: CPU=arm64 libsds-android-arm64: ABIDIR=arm64-v8a libsds-android-arm64: ARCH_DIRNAME=aarch64-linux-android libsds-android-arm64: | libsds-android-precheck build deps $(MAKE) build-libsds-for-android-arch ANDROID_ARCH=$(ANDROID_ARCH) \ - ARCH=$(ARCH) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) + CPU=$(CPU) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) libsds-android-amd64: ANDROID_ARCH=x86_64-linux-android -libsds-android-amd64: ARCH=amd64 +libsds-android-amd64: CPU=amd64 libsds-android-amd64: ABIDIR=x86_64 libsds-android-amd64: ARCH_DIRNAME=x86_64-linux-android libsds-android-amd64: | libsds-android-precheck build deps $(MAKE) build-libsds-for-android-arch ANDROID_ARCH=$(ANDROID_ARCH) \ - ARCH=$(ARCH) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) + CPU=$(CPU) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) libsds-android-x86: ANDROID_ARCH=i686-linux-android -libsds-android-x86: ARCH=i386 +libsds-android-x86: CPU=i386 libsds-android-x86: ABIDIR=x86 libsds-android-x86: ARCH_DIRNAME=i686-linux-android libsds-android-x86: | libsds-android-precheck build deps $(MAKE) build-libsds-for-android-arch ANDROID_ARCH=$(ANDROID_ARCH) \ - ARCH=$(ARCH) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) + CPU=$(CPU) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) libsds-android-arm: ANDROID_ARCH=armv7a-linux-androideabi -libsds-android-arm: ARCH=arm +libsds-android-arm: CPU=arm libsds-android-arm: ABIDIR=armeabi-v7a libsds-android-arm: ARCH_DIRNAME=arm-linux-androideabi libsds-android-arm: | libsds-android-precheck build deps # cross-rs target architecture name does not match the one used in android $(MAKE) build-libsds-for-android-arch ANDROID_ARCH=$(ANDROID_ARCH) \ - ARCH=$(ARCH) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) \ + CPU=$(CPU) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) \ libsds-android: ifeq ($(ARCH),arm64) diff --git a/library/libsds.nim b/library/libsds.nim index 59881c5..53d2a4e 100644 --- a/library/libsds.nim +++ b/library/libsds.nim @@ -5,7 +5,7 @@ when defined(linux): {.passl: "-Wl,-soname,libsds.so".} -import std/[typetraits, tables, atomics, locks], chronos, chronicles +import std/[typetraits, tables, atomics], chronos, chronicles import ./sds_thread/sds_thread, ./alloc, @@ -57,29 +57,6 @@ template callEventCallback(ctx: ptr SdsContext, eventName: string, body: untyped RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), ctx[].eventUserData ) -var - ctxPool: seq[ptr SdsContext] - ctxPoolLock: Lock - -proc acquireCtx(callback: SdsCallBack, userData: pointer): ptr SdsContext = - ctxPoolLock.acquire() - defer: ctxPoolLock.release() - if ctxPool.len > 0: - result = ctxPool.pop() - else: - result = sds_thread.createSdsThread().valueOr: - let msg = "Error in createSdsThread: " & $error - callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData) - return nil - -proc releaseCtx(ctx: ptr SdsContext) = - ctxPoolLock.acquire() - defer: ctxPoolLock.release() - ctx.userData = nil - ctx.eventCallback = nil - ctx.eventUserData = nil - ctxPool.add(ctx) - proc handleRequest( ctx: ptr SdsContext, requestType: RequestType, @@ -163,9 +140,10 @@ proc SdsNewReliabilityManager( echo "error: missing callback in NewReliabilityManager" return nil - ## Create or reuse the SDS thread that will keep waiting for req from the main thread. - var ctx = acquireCtx(callback, userData) - if ctx.isNil(): + ## Create the SDS thread that will keep waiting for req from the main thread. + var ctx = sds_thread.createSdsThread().valueOr: + let msg = "Error in createSdsThread: " & $error + callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData) return nil ctx.userData = userData @@ -205,20 +183,14 @@ proc SdsCleanupReliabilityManager( initializeLibrary() checkLibsdsParams(ctx, callback, userData) - let resetRes = handleRequest( - ctx, - RequestType.LIFECYCLE, - SdsLifecycleRequest.createShared(SdsLifecycleMsgType.RESET_RELIABILITY_MANAGER), - callback, - userData, - ) - - if resetRes == RET_ERR: + sds_thread.destroySdsThread(ctx).isOkOr: + let msg = "libsds error: " & $error + callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData) return RET_ERR - releaseCtx(ctx) + ## always need to invoke the callback although we don't retrieve value to the caller + callback(RET_OK, nil, 0, userData) - # handleRequest already invoked the callback; nothing else to signal here. return RET_OK proc SdsResetReliabilityManager(