diff --git a/src/basics/basics/utilities/UbSystem.h b/src/basics/basics/utilities/UbSystem.h
index 8382e3722762d5a5823a2d8e7a257ce7a0cfd1a6..ddaf6a31d6d90c7a90b12c3eb48fb05242fe79ac 100644
--- a/src/basics/basics/utilities/UbSystem.h
+++ b/src/basics/basics/utilities/UbSystem.h
@@ -395,14 +395,14 @@ namespace UbSystem
    /*==========================================================*/
    inline unsigned long getCurrentThreadID()
    {
-      #if defined UBSYSTEM_WINDOWS
+      #if defined UBSYSTEM_WINDOWS || defined(UBSYSTEM_CYGWIN)
          return (unsigned long)GetCurrentThreadId();
-      #elif (defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_APPLE)) && !defined(UBSYSTEM_CYGWIN)
+      #elif defined(UBSYSTEM_APPLE)
          uint64_t tid;
          pthread_threadid_np(nullptr, &tid);
          return (unsigned long)tid;
-      #elif defined(UBSYSTEM_CYGWIN)
-         return (unsigned long)GetCurrentThreadId();
+      #elif defined(UBSYSTEM_LINUX)
+         return (unsigned long)syscall(SYS_gettid);
       #elif defined(UBSYSTEM_AIX)
          return (unsigned long) getpid(); //WORKAROUND for IBM (for get thread id is another function necessary) 
       #else